2010-02-25 8 views
1

특정 시간에 메소드를 호출하려면 어떻게해야합니까?Java에서 고정 시간에 메소드 호출

예를 들어 6:00과 13:00에 메소드를 호출 할 수 있습니다.

저는 Windows 용 데스크톱 응용 프로그램에서 일하고 있습니다.

답변

10

TimerTimerTask 클래스를 살펴보십시오. 특정 시간 또는 반복적으로 실행되도록 스레드를 예약 할 수 있습니다.

public class Alarm { 
    Timer _timer; 

    public Alarm() { 

     // Create a Date corresponding to 10:30:00 AM today. 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, 10); 
     calendar.set(Calendar.MINUTE, 30); 
     calendar.set(Calendar.SECOND, 0); 

     Date alarmTime = calendar.getTime(); 

     _timer = new Timer(); 
     _timer.schedule(new AlarmTask(), alarmTime); 
    } 

    class AlarmTask extends TimerTask { 
     /** 
     * Called on a background thread by Timer 
     */ 
     public void run() { 
      // Do your work here; it's 10:30 AM! 

      // If you don't want the alarm to go off again 
      // tomorrow (etc), cancel the timer 
      timer.cancel(); 
     } 
    } 
} 
+0

+1 : JDK보다 롤을 사용하는 것이 더 좋습니다. Quartz 용 – akf

4

대안에 Quartz를 사용합니다. Timer 또는 TimerTask과 실질적으로 동일하지만 cron 스타일 구문을 사용하여 실행해야하는 것에 대한 설명을 허용합니다. ScheduledThreadPoolExecutor을 : 당신이 더 엄격해야하는 경우 바람직한 방법은,이 자바 1.5 이후

+0

+1, cron 스타일 구문은 강력합니다. – HeDinges

3

여러 작업자 스레드가 필요하거나 할 때이 클래스는 타이머에 바람직하다 때 추가적인 유연성 또는 기능 ThreadPoolExecutor (이 클래스가 확장)가 필요합니다.

여기서 scheduleAtFixedRate()scheduleWithFixedRate() 중에서 선택하십시오. 사용법에 대한 자세한 내용은 링크 된 javadoc에서 찾을 수 있습니다.