【发布时间】:2011-01-20 20:44:21
【问题描述】:
如何在特定时间调用方法?
例如在 6:00 和 13:00 调用方法。
我正在开发适用于 Windows 的桌面应用程序。
【问题讨论】:
标签: java
如何在特定时间调用方法?
例如在 6:00 和 13:00 调用方法。
我正在开发适用于 Windows 的桌面应用程序。
【问题讨论】:
标签: java
查看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 样式语法描述必须运行的内容。
【讨论】:
从 Java 1.5 开始有一个更好的方法,如果您需要更严格:ScheduledThreadPoolExecutor:
当需要多个工作线程或需要 ThreadPoolExecutor(此类扩展)的额外灵活性或功能时,此类比 Timer 更可取。
您可以在scheduleAtFixedRate() 和scheduleWithFixedRate() 之间进行选择。有关用法的更多详细信息,请参阅链接的 javadoc。
【讨论】: