我有4-5個工作線程處理大型消息隊列。而且我還有另外一段使用2-3名工作人員的代碼。我想在處理大消息隊列時阻止所有其他工作人員。Multitheading阻塞工作線程
我使用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());
}
在這種情況下,您可以使用'ReadWriteLock'。讓所有小型消息處理器鎖定讀取鎖定和大型消息隊列處理器鎖定以進行寫入。雖然不太合適。 – Gray 2013-04-08 19:26:06