2014-02-06 45 views

回答

0

否,計時器不記得任何事之前,JVM開始...您需要的地方記錄最後運行時間,並在服務器上重啓你將不得不檢查最後一次運行並在此後24小時安排下一次運行。可能使用scheduleAtFixedRate(TimerTask task, Date firstTime, long period) ...雖然我會敦促你看看轉換此代碼使用ScheduledExecutorService

+0

威爾ScheduledExecutorService的重新啓動服務器時,重新開始工作?任何其他出路解決這個問題? – user3280577

+0

不,'ScheduledExecutorService'不會執行任何魔術......你必須有一個外部存儲機制,服務器可以在下次啓動時使用它來知道下一次運行的時間。正如上面的意見之一所暗示的那樣,這個機制可能是Quartz,或者cron,或者是自制的。 – dcsohl

+0

至於爲什麼我建議'ScheduledExecutorService',看看[這個問題](http://stackoverflow.com/questions/409932/java-timer-vs-executorservice)瞭解更多詳情。 – dcsohl