2016-12-29 15 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

を使用します。実行したいすべてのタスクをprorityキューに追加します。これにより優先度の高いタスクが上に来るようになります。キューをポーリングし続ける.....今度は優先度の高いタスクキューに追加されていませんが、依然として優先度の高いタスクの後にタスクを実行する必要があります.....タスクが実行する必要がある場合はtrueを返す単一のブールメソッドを使用してインターフェイスを実装します。実行中の状態がfalseの場合、実行中の状態をポーリング中に入力します。タスクを優先度キューに戻してポーリングを保持します。

+0

"タスクを実行する他のいくつかのタスクが完了した後に "あなたは実行の命令に従いたいと思う。 – prashant

関連する問題