2016-12-29 122 views
2

是否有一種常規方式在多個其他任務完成後運行任務,而無需保留單獨的線程來等待它們?在其他幾項任務完成後運行任務

+2

您可以使用回調機制(例如屬性更改偵聽器),然後在所有任務簽入後調用上一個任務。 –

回答

3

我會用一個parallelStream其繼續之前執行的任務(所以不是等待這樣)

tasks.parallelStream().forEach(Runnable::run); 
doSomething(); 
+1

或['ExecutorService.invokeAll'](https://docs.oracle。 com/javase/8/docs/api/java/util/concurrent/ExecutorService.html#invokeAll-java.util.Collection-),如果需要更多的執行控制權... – Holger

0

定義優先級阻塞隊列,並把所有的任務,實現媲美接口。將要運行的所有任務添加到優先隊列中,這將確保具有更高優先級的任務位於最前面......繼續輪詢隊列.....現在,如果優先級更高的任務尚未添加到隊列中,但您仍然希望您的任務在該更高優先級任務之後運行.....讓您的任務使用單個布爾方法實現接口,如果任務應該運行,該方法將返回true .....輸入你的運行條件.......在輪詢運行條件是否爲假時,將任務添加回優先級隊列並保持輪詢。

+0

我假設你說「運行任務在完成了其他幾項任務之後「您想遵循執行順序。 – prashant