1

物事を並行して実行する必要があるJavaプロジェクトがあります。私はエグゼキュータでこれを行います。問題は、非常に多くの場所でエグゼキュータを使用する必要があるということです。作業を行うために数人のエグゼキュータを渡すことを好むべきですか(一時的にグローバルスレッド数を制限することを忘れてください)、または必要な場所にエグゼキュータを作成することが望ましいですか?

4

2 に答える 2

3

本当に考えなければならないことは、作成した Executor で動作するスレッドの数を制御することです。

各エグゼキューターから作成するスレッドの数は、送信される各タスクの到着頻度と予想期間 (処理時間) の関数になります。論理タスクの種類ごとにキューを用意することで、そのタスクだけのエグゼキューターを調整できるため、必要以上のスレッドを持たず、予想されるタスクのスループットに常に追いつくことができます。

アプリ内のすべての処理段階で共有されるモノリシック Executor が 1 つある場合、調整がはるかに難しくなります。

SEDAは、この処理段階ごとのキューの原則を反映する典型的な同時実行パターンです。

場合によっては、まれな、アドホックまたは優先度の低いスケジュールされたタスクなど、共有エグゼキューターを使用することが理にかなっています。

于 2010-11-05T12:54:38.627 に答える
0

いくつのエグゼキュータを使用する必要があるかを示す厳密な規則はありません。ただし、推奨できることが1つあります。いくつかの依存性注入メカニズムまたはフレームワークを使用して、executor 実装を注入します。これにより、使用済みのエグゼキューターの迅速かつ簡単な交換と構成が可能になります。

于 2010-11-05T12:42:22.123 に答える