2014-10-07 132 views
0

對不起,我有點困惑,但我有點困惑,需要一些協助與併發。如何知道ScheduledExecutorService何時完成

,如果我有一個類中的線程池,其計算一些數值每隔10秒,如本

private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); 
executorService.schedule(callable, 10, TimeUnit.SECONDS); 

我怎麼能確定何時結果已經回來了。當結果好了,我需要處理的地圖,並做了一些計算,然後刪除/清空地圖

我能想到的唯一方法是用戶可觀察界面,但我猜這是不正確的做法

感謝

+1

你爲什麼不從計劃任務中啓動的後續行動?這將是最自然的做法。 – 2014-10-07 08:22:12

+0

看看'schedule()'方法的返回類型嗎? – Braj 2014-10-07 08:25:12

+0

它返回一個預定的將來< integer>然而 - 這基本上不會運行一次,它會隨着數字的變化而持續運行,所以我只需要在循環中檢查計劃的future.isdone?一旦完成是真的我有一個新的結果? – Biscuit128 2014-10-07 08:27:20

回答

1

您可以使用ScheduledFuture和調用isDone(因爲ScheduledFuture擴展未來)這樣

ScheduledFuture schedule = executorService.schedule(callable, 10, TimeUnit.SECONDS); 
schedule.isDone() 
+0

嗨,我在頂部添加了一個評論,這些問題都做了一點。謝謝 – Biscuit128 2014-10-07 08:28:27

+0

@ Biscuit128,所以你想在isDone()返回true時調用/執行多個動作? – sol4me 2014-10-07 08:31:34

+0

基本上這是一款彩票遊戲,但是數字會在每完成x秒時都會變化,我需要對贏得的獎金進行一些檢查 – Biscuit128 2014-10-07 08:32:25