大きなメッセージ キューを処理する 4 ~ 5 個のワーカー スレッドがあります。また、2 ~ 3 個のワーカーを使用して実行する別のコードもあります。大きなメッセージ キューが処理されているときに、他のすべてのワーカーをブロックしたかったのです。
私はJDK 6とJmsを使用しています
編集:
キュー プロセス ワーカーが終了しませんでした。メッセージがない場合、キューでブロックされました。これらのワーカーはエグゼキューター スレッド プールによって管理されます。読み書きロックを使用すると、これらのワーカーの 1 つもブロックされます。また、循環バリアを使用する場合は、ブロックしている 2 番目のプロセスを解放するためにスレッドを終了する必要があります。ワーカーはスレッド プールによって管理されるため、すべてのワーカーがメッセージの処理でビジー状態になるとは限りません。
お知らせ下さい、
final ExecutorService executor = getExecutorManager().getExecutor();
for (int i = 0; i < threadPoolSize; i++) {
executor.submit(new MessageWorker(qConn));
}
以下は 2 番目のモジュールです。ここでは、キュー プロセッサのワーカー スレッドが動作している間、すべてのワーカーをブロックします。
final ExecutorService executor = getExecutorManager().getExecutor();
for (int i = 0; i < threadPoolSize; i++) {
executor.submit(new DbUpdateWorker());
}