使用Timer#schedule的Java TimerTask永远不会运行

时间:2014-05-02 16:28:02

标签: java timer timertask

我试图让Java(1.7)重复TimerTask工作,例如。

TokenJanitor janitor = new TokenJanitor( TokenManager.getInstance() );
try {
    new Timer().schedule(janitor, System.currentTimeMillis()+15000, 15000);
    LOG.info("TokenJanitor is running...");
    ...

然后TokenJanitorTimerTask,例如

public class TokenJanitor extends TimerTask {

    @Override
    public void run() {
        LOG.info("Running TokenJanitor cleanup now...");
        System.out.println("Hello..."); // just for good measure

它甚至不会运行一次。我在调用schedule函数后看到了日志消息,但我看不到TimerTask的任何日志消息或打印输出。我正在使用log4j但是我正在使用它,就像我在其他所有类中一样,它工作正常。对于它的价值,我使用Jetty来运行Web服务器,因此上面的schedule函数在启动服务器的类的main方法中调用。

1 个答案:

答案 0 :(得分:2)

查看您使用Timer类的方法Timer#schedule(TimerTask task,long delay,long period)

task - task to be scheduled.
delay - delay in milliseconds before task is to be executed.
period - time in milliseconds between successive task executions. 

您已将System.currentTimeMillis()+15000指定为延迟,这是很长时间才能运行任务。