在Java中的固定时间调用方法

如何在特定时间调用方法?

例如,在6:00和13:00调用该方法。

我正在为Windows桌面应用程序工作。

看看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(); } } } 

使用Quartz的替代方法。 它实际上与TimerTimerTask相同,但它确实允许描述必须使用cron样式语法运行的内容。

从Java 1.5开始,有一种更好的方法,如果你需要更严格: ScheduledThreadPoolExecutor

当需要多个工作线程时,或者当需要ThreadPoolExecutor(此类扩展)的额外灵活性或function时,此类优于Timer。

您可以在scheduleAtFixedRate()scheduleWithFixedRate()之间scheduleAtFixedRate()选择。 有关用法的更多详细信息可以在链接的javadoc中找到。