独立して実行可能な数百の小さなタスクに分割できる 1 つの大きなタスクを考えてみましょう。より具体的には、それぞれの小さなタスクは、軽いネットワーク リクエストを送信し、サーバーから受信した応答を決定することです。これらの小さなタスクは 1 秒以上かかるとは予想されず、合計で数台のサーバーが関与します。
私は Executor フレームワークを使用してこれを実装する 2 つのアプローチを念頭に置いています。
- いくつか、たとえば 5 ~ 10 個のタスクを作成し、それぞれに一連の送受信を行います。
- 送信と受信ごとに 1 つのタスク (Callable または Runnable) を作成し、それらすべて (数百) をエグゼキューターによって実行するようにスケジュールします。
私の質問が、これらをテストして何が優れているかを自分で確認するのが面倒だと示している場合は申し訳ありません (少なくともパフォーマンスに関しては)。私の質問は、この特定のケースへの回答を見ながら、より一般的な側面を持っています。このような状況で、エグゼキュータを使用してすべてのスケジューリングやその他の処理を実行したい場合、小さなタスクをたくさん作成するのと、それらを少数の大きなタスクにグループ化するのとではどちらがよいでしょうか?