如何在特定时间调用方法?
例如,请在6:00和13:00调用该方法。
我正在使用适用于Windows的桌面应用程序。
答案 0 :(得分:10)
查看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();
}
}
}
答案 1 :(得分:4)
使用Quartz的替代方法。它实际上与Timer
或TimerTask
相同,但它确实允许使用cron
样式语法描述必须运行的内容。
答案 2 :(得分:3)
自Java 1.5以来,有一种更好的方法,如果你需要更加严格:ScheduledThreadPoolExecutor
:
当需要多个工作线程时,或者当需要ThreadPoolExecutor(此类扩展)的额外灵活性或功能时,此类优于Timer。
您可以在scheduleAtFixedRate()
和scheduleWithFixedRate()
之间进行选择。有关用法的更多详细信息,请参见链接的javadoc。