특정 시간에 메소드를 호출하려면 어떻게해야합니까?Java에서 고정 시간에 메소드 호출
예를 들어 6:00과 13:00에 메소드를 호출 할 수 있습니다.
저는 Windows 용 데스크톱 응용 프로그램에서 일하고 있습니다.
특정 시간에 메소드를 호출하려면 어떻게해야합니까?Java에서 고정 시간에 메소드 호출
예를 들어 6:00과 13:00에 메소드를 호출 할 수 있습니다.
저는 Windows 용 데스크톱 응용 프로그램에서 일하고 있습니다.
Timer
및 TimerTask
클래스를 살펴보십시오. 특정 시간 또는 반복적으로 실행되도록 스레드를 예약 할 수 있습니다.
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();
}
}
}
대안에 Quartz를 사용합니다. Timer
또는 TimerTask
과 실질적으로 동일하지만 cron
스타일 구문을 사용하여 실행해야하는 것에 대한 설명을 허용합니다. ScheduledThreadPoolExecutor
을 : 당신이 더 엄격해야하는 경우 바람직한 방법은,이 자바 1.5 이후
+1, cron 스타일 구문은 강력합니다. – HeDinges
여러 작업자 스레드가 필요하거나 할 때이 클래스는 타이머에 바람직하다 때 추가적인 유연성 또는 기능 ThreadPoolExecutor (이 클래스가 확장)가 필요합니다.
여기서 scheduleAtFixedRate()
과 scheduleWithFixedRate()
중에서 선택하십시오. 사용법에 대한 자세한 내용은 링크 된 javadoc에서 찾을 수 있습니다.
+1 : JDK보다 롤을 사용하는 것이 더 좋습니다. Quartz 용 – akf