2012-10-17 56 views
6

我有我喂一個Runnable與scheduledFixedDelay這樣我可以強制執行額外的預定執行嗎?

Runnable periodic = new Runnable() { ... } 

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); 
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES); 

它將與執行之間的延遲1分鐘運行singleThreadExecutor。問題是,有時我需要按需「運行」。那可能嗎?

我想過取消執行,運行Runnable並重新啓動執行,但我真正喜歡的是一些簡單的方法,它只是執行Runnable時間的頭,並重新安排它在一分鐘內重新運行。

回答

4

當你想運行的任務,你可以提交

executor.submit(periodic); 

或延遲

executor.schedule(periodic, delay, units); 
+0

增加,但如果執行者已經有這個了Runnable要麼執行或計劃,然後會發生什麼? –

+0

它會運行兩次,你問它運行。 –

+2

雖然不完全是我想要的,我已經批准了這個答案。我真的很喜歡它現在執行*計劃*執行,而不是計劃它的時間,但它也可以像我使用singleThreadScheduledExecutor一樣添加定期作爲新的一次性工作。 –

相關問題