0

現在、複数のスレッドプールを作成する必要があります。各スレッドプールは単一スレッドのスレッドプールです。 条件に基づいて各スレッドプールにタスクを割り当てます。だから私はスレッドプールの追跡を維持する必要があります。複数のスレッドプール、つまりそれぞれが単一のスレッドを持つ複数のエグゼキュータを作成する方法

どうすればいいですか? スレッドプールの配列を作成できますか?

ExecutorService executor = Executors.newSingleThreadExecutor(); 

これは、スレッドプールを1つ作成する方法です。今度は5つのスレッドプールを作成します。

ExecutorService[] executor; 
for(int i=0;i<5;i++){ 
executor[i]= Executors.newSingleThreadExecutor(); 
} 

これは問題ありませんか?これは正しい構文ですか?そうでない場合は、それを行う方法を提案できますか?あなたのシナリオでは

+5

確かに、あなたはそれを行うことができます。しかし、なぜ地球上であなたはしたいですか? – shmosel

+0

私のイベントはそれぞれの会社が注文する必要があります。したがって、1つの会社に関連するすべてのイベントが1つのスレッドプールに送信されます。このようにして、彼らは私が特定の会社のために受け取ったのと同じ順序で処刑されます。 – africandrogba

+0

送信された注文と受信された注文が必ずしも同じではないことはわかっていますか? – alfasin

答えて

0

は、私はマニュアルに従って以来、ちょうど1つのスレッドの実行者を使用することが可能であると考えている:

は アンバウンド形式のキューなしで動作する、単一のワーカースレッドを使用するExecutorのを作成します。ただし、シャットダウン前に実行中にエラーが発生したため、この単一スレッドが終了すると、 が終了します。 のタスクは、の順番で実行されることが保証されています。任意の時点で1つのタスクがアクティブになります( )。そうでなければ、等価の newFixedThreadPool(1)とは異なり、返されたエグゼキュータは、 が追加のスレッドを使用するように再構成できないことが保証されています。

[Company1Task1、Company2Task1、Company1Task2、Company3Task1、 Company1Task3、...]

そのため、複数の企業からの複数の入力と、エグゼキュータのキューは次のようになります

そしてExecutorはそれを順番に処理します。

+0

私は、彼らが別々の会社の間で逐次的である必要はないと考えています。 – shmosel

関連する問題