在Java中定时调用方法

时间:2010-02-25 04:55:25

标签: java

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

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

我正在使用适用于Windows的桌面应用程序。

3 个答案:

答案 0 :(得分: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();
        }
    }
}

答案 1 :(得分:4)

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

答案 2 :(得分:3)

自Java 1.5以来,有一种更好的方法,如果你需要更加严格:ScheduledThreadPoolExecutor

  

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

您可以在scheduleAtFixedRate()scheduleWithFixedRate()之间进行选择。有关用法的更多详细信息,请参见链接的javadoc。