开发者

Call a method at fixed time in Java

How do I call a method at a particular time?

For example to call the method at 6:00 and 13:00.

I'm working at a desktop a开发者_JAVA技巧pplication for Windows.


Have a look at the Timer and TimerTask classes. You can schedule a thread to execute at a specific time, or repeatedly.

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


An alternative to to use Quartz. It's effectively the same as Timer or TimerTask, but it does allow for a description of what must run using a cron style syntax.


Since Java 1.5 there is a preferable way, if you need to be more strict: ScheduledThreadPoolExecutor:

This class is preferable to Timer when multiple worker threads are needed, or when the additional flexibility or capabilities of ThreadPoolExecutor (which this class extends) are required.

There you choose between scheduleAtFixedRate() and scheduleWithFixedRate(). More details on the usage can be found in the linked javadoc.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜