2014-01-10 2 views
0

코드를 조작하기 위해 Java에서 시간 사용을 테스트하려고합니다. 그래서 내가 달걀이있는 앱을 가지고 있다고 가정 해 봅시다. 응용 프로그램에서 60 초가 경과 할 때까지 알이 부화되지 않으므로 어떤 방법이나 클래스를 사용합니까?Java에서 시간을 사용하여 코드를 조작하려면 어떻게해야합니까?

+5

질문에 자세히 설명하려고주세요 물리학을 변경하는 자바 API가 없다는 것이 확실합니다. – chrylis

+1

날짜를 사용할 수 있습니까? System.CurrentTimeMilis. 무수한 방법이 있습니다. 그냥 자바에 시간을 얻는 방법 구글, 그리고 날짜에 더하기 및 빼기를 할 구글 방법. – Quillion

+0

[java.util.Timer] (http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html)의 하위 클래스를 만들고 'EggTimer'를 만들 수 있습니까? –

답변

3

Timer 클래스가해야 할 당신이 무엇인지 후 :

백그라운드 스레드로 장래 실행되는 태스크를 스케줄하는 스레드를위한 시설. 작업 은 일회성 실행 또는 일정한 간격으로 에서 반복 실행되도록 예약 될 수 있습니다.

here의 간단한 예제를 살펴볼 수 있습니다.

0

System.currentTimeMillis()은 시스템의 현재 시간을 밀리 초 단위로 반환합니다. 그래서 while 루프에서 현재 시간을 확인하고 Thread을 만들어야합니다.

+1

바쁜 대기는 대개 반 패턴입니다. –

+0

[wheel] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Timer.java)을 다시 구현해야하는 이유는 무엇입니까? –

2

여러 번 실행하는 코드를 원하는 경우이

Timer timer = new Timer(); 

같은 방식으로 타이머를 사용할 수 있습니다 : 당신이 한 번만 실행하려면

timer.scheduleAtFixedRate(new TimerTask() { 
    @Override 
    public void run() { 
    // Your logic here 
    // Your logic will run every 60 second 
    System.out.println("egg hatched"); 
    } 
}, 0, 60000); 

timer.schedule(new TimerTask() { 
    @Override 
    public void run() { 
    // Your logic here 
    System.out.println("egg hatched"); 
    } 
}, 60000); 

클래스 타이머에 대한 자세한 내용은 here

을 참조하십시오.
0

별도의 예약 된 스레드로 실행 해보십시오.

ScheduledExecutorService scheduler = 
       Executors.newScheduledThreadPool(1); 
     Runnable hatcher = new Runnable() { 
      @Override 
      public void run() { 
       egg.hatch(); 
      } 
     }; 
     scheduler.schedule(hatcher, 60, TimeUnit.SECONDS); 
1

가장 쉬운 구식 단일 스레드 방식은

Thread.sleep(60*1000); 
    System.out.println("egg hatched"); 

입니다 그리고 그것은 정확히분 후 인쇄 아무 보증도 없다

관련 문제