2014-05-02 35 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