特にdexecutor(免責事項:私は所有者だ)と呼ばれ、この目的のためのフレームワークがあり、このことは提供を行うための
Dexecutorは、信頼性の高い方法で依存/独立したタスクを実行するための非常に軽量フレームワークですが、最小限のAPI。
- グラフ内のノードを追加するためのAPI(addDependency、addIndependent、addAsDependentOnAllLeafNodes、addAsDependencyToAllInitialNodesは、後者の2つは、最初の二つのハイブリッドバージョンである)
- と順にノードを実行するために他の。ここで
最も単純な例である:ここでは
DefaultDependentTasksExecutor<Integer, Integer> executor = newTaskExecutor();
executor.addDependency(1, 2);
executor.addDependency(1, 2);
executor.addDependency(1, 3);
executor.addDependency(3, 4);
executor.addDependency(3, 5);
executor.addDependency(3, 6);
//executor.addDependency(10, 2); // cycle
executor.addDependency(2, 7);
executor.addDependency(2, 9);
executor.addDependency(2, 8);
executor.addDependency(9, 10);
executor.addDependency(12, 13);
executor.addDependency(13, 4);
executor.addDependency(13, 14);
executor.addIndependent(11);
executor.execute(ExecutionBehavior.RETRY_ONCE_TERMINATING);
は、依存関係グラフが一度これらのタスクの上の1,12,11が並行して実行します 
タスクを、構築される方法であります例えば、タスク1が終了し、タスク2と3がタスク12と同じように実行され、タスク13が終了するなどと言うことができます。
フォーク/参加を見たことがありますか? –
タスクがそれぞれの結果を再利用するかどうかは疑問です。あらかじめ定義されたシーケンスを持つ独立した作業単位である場合、スケジューリングおよびカスタムヒューリスティックは、非常に単純なカスタムスレッドプールエグゼキュータによって解決できます。 –
はい、java.util.concurrentからExecutor Servicesを使用することも考えていますが、タスクはそれぞれの結果を再利用するという点で独立しているようです。 Viktor Klangが親切にも提案したように、フォーク/ジョインを見てみるべきです。 –