如何在XX:XX:XX时间运行方法?

时间:2009-07-31 17:42:46

标签: java

HI

我想每隔X小时在我的程序中运行一个方法,怎么做? 我正在谷歌搜索,没有任何东西:/

5 个答案:

答案 0 :(得分:9)

你可以考虑Quartz

这是在java中运行的某种cron。我承认,如果你只想安排一份工作,这可能是一种过度杀伤。

答案 1 :(得分:6)

您可以查看Timer课程,但最好的选择是使用 ScheduledExecutorService

e.g。这将以预定的速度发出哔声:

import static java.util.concurrent.TimeUnit.*;
 class BeeperControl {
    private final ScheduledExecutorService scheduler =
       Executors.newScheduledThreadPool(1);

    public void beepForAnHour() {

        final Runnable beeper = new Runnable() {
                public void run() { 
                    System.out.println("beep"); 
                }
            };

        final ScheduledFuture<?> beeperHandle =
            scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);

        scheduler.schedule(new Runnable() {
                public void run() { 
                    beeperHandle.cancel(true); 
                }
        }, 60 * 60, SECONDS);
    }
 }

答案 2 :(得分:2)

我在大部分时间安排中使用Quartz框架(http://www.quartz-scheduler.org/),但如果你做的很简单,java.util.Timer就可以了。

// in a class body...

public static void main( String[] argv ) {
    Timer timer = new Timer();
    int secondsBetweenRuns = 3600;
    timer.schedule( new MyOwnTask(), 0, secondsBetweenRuns * 1000 );
}

static class MyOwnTask extends TimerTask {

    public void run() {
        doWhateverYouNeedToDoEveryHour();
    }
}

答案 3 :(得分:0)

Scheduled Task(在Windows)或Cron(在Unix中)

答案 4 :(得分:0)

您可以将时间保存在某一点,而不是启动计时器。时间到了,运行方法并重新启动计时器。