私たちは、3 つの異なるソースからメッセージを受信することによって一連のオブジェクトが影響を受ける可能性があるアプリケーションに取り組んでいます。(任意のソースからの) 各メッセージには、そのターゲットとして 1 つのオブジェクトがあります。各メッセージ受信者は、独自のスレッドで実行されます。
メッセージの処理 (受信後) をできるだけ高速にしたいので、ターゲット オブジェクトに対するメッセージ処理は、スレッド プールの別のスレッドで実行されます。メッセージの処理には、送信者からのメッセージの読み取り/受信よりも時間がかかります。
プールの各スレッドが特定のオブジェクトのセットのみに専用である場合、より高速になると考えています。たとえば、次のようになります。
Thread1 -> objects named A-L
Thread2 -> objects named M-Z
オブジェクト (またはスレッド) の各セットには、処理中の保留中のメッセージの専用キューがあります。
私の推測では、必要なスレッド同期が各受信スレッドと 1 つの処理スレッドの間だけである場合、ブロック キューにメッセージを入れる必要がある間は、ワーカー スレッドをランダムに割り当てて処理するよりも高速になると思います。メッセージ (この場合、同じオブジェクトに対するメッセージを持つ 2 つの異なるスレッドが存在する可能性があります)。
私の質問は、実際には 2 つの部分です。
ワーカー スレッドを特定のオブジェクト セット専用にする方が優れた/高速なアプローチであるという前提に人々は同意しますか?
これがより良いアプローチであると仮定すると、既存の Java ThreadPool クラスにはこれをサポートする方法がありますか? それとも、独自の ThreadPool 実装をコーディングする必要がありますか?
あなたが提供できるアドバイスをありがとう。