タスクのリストを実行するために固定スレッドプールでjava.util.concurrent.ExecutorServiceを使用しています。私のタスク リストは通常 80 ~ 150 程度で、以下に示すように、一度に実行するスレッドの数を 10 に制限しています。
ExecutorService threadPoolService = Executors.newFixedThreadPool(10);
for ( Runnable task : myTasks )
{
threadPoolService.submit(task);
}
私のユースケースでは、完了したタスクでもExecutorServiceに再送信する必要がありますが、既に送信されたすべてのタスクが処理/完了された場合にのみ実行/実行する必要があります。つまり、基本的に、提出されたタスクはローテーションベースで実行する必要があります。threadPoolService.shutdown()
したがって、この場合、いずれかまたはthreadPoolService.shutdownNow()
呼び出しはありません。
私の質問は、回転ベースのタスクにサービスを提供するExecutorServiceをどのように実装するのですか?