我需要每X
秒執行一次任務。
我知道我可以使用TimerTask
或ScheduledThreadPool
但我的問題是這個任務取決於狀態。
I.e.運行B
的任務將執行的操作取決於運行結果A
。
什麼是最好的方法來編碼?
這樣做也許是根據前次運行的結果安排定期任務
while(true){
//do stuff
Thread.sleep(5000);
}
是我可以在這裏做的最好?
我需要每X
秒執行一次任務。
我知道我可以使用TimerTask
或ScheduledThreadPool
但我的問題是這個任務取決於狀態。
I.e.運行B
的任務將執行的操作取決於運行結果A
。
什麼是最好的方法來編碼?
這樣做也許是根據前次運行的結果安排定期任務
while(true){
//do stuff
Thread.sleep(5000);
}
是我可以在這裏做的最好?
在TimerTask的實現只是定義你的狀態,然後使用Timer
:
TimerTask task = new TimerTask()
{
private int state = 0;
@Override
public void run()
{
System.out.println ("State is: " + state);
state += 1;
}
};
new Timer().schedule (task, 0L, 1000L);
這將運行任務的每一秒(每1000L毫秒),直到永遠。
我想你可以使用一個Timer
有TimerTask
:
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// Some task
}
};
timer.schedule(task, 10000, 10000);
它運行task
每10s
的10s
初始第一時間延遲之後開始。
作爲每Timer.schedule
的文檔,這種方法
安排指定的任務進行重複的固定延遲執行,在指定的延遲後 開始。隨後的執行以大約固定的時間間隔進行 ,由指定的時間段隔開。
我需要每X秒運行一次「永遠」 – Jim 2013-02-26 12:28:55
所以它只是總是調用'run'它不會重新創建可運行的? – Jim 2013-02-26 12:29:39
@Jim在我的例子中'run'永遠在每個'TimerTask'的同一個實例上被調用。只是跑步,看看。 – 2013-02-26 12:31:54