2014-05-02 27 views
0

我试图让Java(1.7)重复TimerTask来运行,例如,使用Timer#时间表的Java 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函数在启动服务器的类的主要方法中调用。

回答

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作为运行该任务很长时间的延迟。

+0

当然,你是对的。愚蠢的错误在我的角色。我指定的是以毫秒为单位的实际时间,即延迟,即任务应该首先开始的毫秒值。谢谢您的帮助。 – RTF

+0

最受欢迎... – Braj