我已經安排了一個TimerTask以固定的時間運行,間隔爲一天,使用java.util.Timer.scheduleAtFixedRate()。 TimerTask有一個邏輯來控制6個小時的持續時間。計時器假設在第二天同樣的時間開始這項任務。但有時只要在持續時間後停止,任務就會重新啓動。我沒有看到這種發生的任何模式,它只是隨機發生。我通過多次運行這個應用程序來測試它,但是無法識別任何特定的模式。java.util.Timer行爲奇怪
它是這樣的。
class App{
public static void main(final String[] args) {
Timer timer = new Timer();
ProcessManagerTask processManager = new ProcessManagerTask()
timer.scheduleAtFixedRate(processManager, today @ 01 AM, 1440 minutes))
//some logic to keep this running forever
}
}
public class ProcessManagerTask extends TimerTask {
public ProcessManagerTask(){
//end time = today @ 7 AM
}
public void run() {
while(end time is not expired){
//do some stuff
}
}
ProcessManagerTask有時會立即在7時重新啓動(當任務結束時)。
編輯:夥計們任何想法爲什麼問題出現在計時器。我仍然無法弄清楚。
編輯[2011年4月8日]:定時器的問題仍然沒有解決。如果有人能提供幫助,我將不勝感激。
我建議使用[ScheduledExecutorService](http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html)。 – mre 2011-03-16 14:09:30
可能會再次出現啓動程序的問題嗎?這跑步在哪裏? – jzd 2011-03-16 14:10:46
我不明白你的問題。如果你的意思是OS在Windows上運行。這個應用程序作爲Windows服務運行,但即使通過命令提示符運行,這個問題即將到來。 – Amit 2011-03-16 14:14:32