0
我希望Java Timer在每t秒後n次調用函數。我現在正在嘗試這個功能,它在每t秒後調用一次函數,但是我希望這個函數只能被調用n次。Java Timer在每t秒後n次調用函數
Timer tt = new Timer();
tt.schedule(new MyTimer(url), t);
我希望Java Timer在每t秒後n次調用函數。我現在正在嘗試這個功能,它在每t秒後調用一次函數,但是我希望這個函數只能被調用n次。Java Timer在每t秒後n次調用函數
Timer tt = new Timer();
tt.schedule(new MyTimer(url), t);
我認爲Timer
沒有它作爲一個內置函數。您將需要添加一個計數器來爲每個呼叫計數,然後在n次後使用cancel()
停止計時器。
事情是這樣的:
final int[] counter = {n};
final Timer tt = new Timer();
tt.schedule(new TimerTask(){
public void run() {
//your job
counter[0]--;
if (counter[0] == 0) {
tt.cancel();
}
}
}, t);
試試Executor服務。你必須數你自己,多久你叫Callable並取消定時器。
您正在遞減'N',然後檢查'counter'?你認爲這會起作用嗎?你需要'final int [] counter = {n}'然後'counter [0] - '然後'if(counter [0] == 0)'。將Timer定義爲長時間運行的對象並向其提交新的TimerTask(並取消TimerTask)也更好。 –
減少'n'是一個錯字。感謝您指出並立即修復。關於'Timer'或'TimerTask'應該取消,我認爲這取決於程序的要求。如果程序應該在n個作業之後存在,那麼'Timer'應該被取消。如果程序將連續運行並且'Timer'將被重用,那麼'TimerTask'應該被取消是完全正確的。爲什麼計數器應該是一個數組壽命? – evanwong
您是否嘗試編譯該代碼?現在您正在嘗試減少最終變量。你不能關閉非最終的局部變量,所以我向你展示瞭解決這個問題的標準技巧。 –