この質問は、SingleThreadExecutor(JDK 1.6) を使用した場合の影響に関するものです。関連する質問がこのフォーラムで以前に尋ねられ、回答されましたが、私が直面している状況は少し異なると思います.
アプリケーションのさまざまなコンポーネント (コンポーネント C1、C2、C3 などと呼びましょう) は、(アウトバウンド) メッセージを生成します。ほとんどの場合、他のコンポーネントから受信したメッセージ (インバウンド) に応答します。これらの送信メッセージは、通常はArrayBlockingQueueインスタンスであるキューに保持されます - おそらくかなり標準的な方法です。ただし、送信メッセージは追加された順序で処理する必要があります。SingleThreadExectorここでは a の使用が明らかな答えだと思います。最終的には 1 対 1 の状況、つまり1 つのキュー ( 1 つのコンポーネントから発信されるメッセージ専用)SingleThreadExecutorに対して1 つになります。
ここで、コンポーネント (C1、C2、C3...) の数は、特定の時点では不明です。それらはユーザーの必要に応じて存在します (最終的には破棄されます)。ピーク負荷時の 200 ~ 300 個のコンポーネントについて話しています。上記の 1:1 設計原則に従って、200SingleThreadExecutor秒を配置します。これが私のクエリのソースです。
非常に多くのSingleThreadExecutorを作成しなければならないという考えに不快感を覚えます。私はむしろSingleThreadExecutorのプールを試して使用したいと思います. ここでの推奨される使用法に関する多くの投稿を読みましたSingleThreadExecutorが、同じプールはどうですか?
ここにいる学識のある女性と男性は何を考えていますか?私は指示、修正、または単に忠告されたいです:-)。