我有 4-5 个工作线程处理大型消息队列。而且我还有另一段代码使用 2-3 个工人运行。我想在处理大型消息队列时阻止所有其他工作人员。
我正在使用 JDK 6 和 Jms
编辑:
队列进程工作者从未终止。当没有消息时,他们阻塞在队列中。这些工人由执行线程池管理。如果我使用读写锁,这些工人之一也会被阻塞。此外,如果使用循环屏障,那么我必须终止线程以释放阻塞的第二个进程。由于工作人员由线程池管理,因此不能保证所有工作人员都会忙于处理消息。
让我知道,
final ExecutorService executor = getExecutorManager().getExecutor();
for (int i = 0; i < threadPoolSize; i++) {
executor.submit(new MessageWorker(qConn));
}
以下是第二个模块,我希望在队列处理器工作线程工作时阻止所有工作人员。
final ExecutorService executor = getExecutorManager().getExecutor();
for (int i = 0; i < threadPoolSize; i++) {
executor.submit(new DbUpdateWorker());
}