2013-05-01 203 views
0

IM在我的程序中使用阻塞隊列.. 在我的客戶端使用blockingqueue..But IM egtting threds輪詢響應,並thred提供給queue.I響應沒有使用來自客戶端的任何的Thread.Sleep機制服務器,因爲即時通訊空隊列中的值,當我的服務器線程延遲將一些消息放入隊列中時。 爲什麼會發生這種情況? 我的代碼;阻塞隊列不阻塞線程?

private BlockingQueue<Message> applicationResponses= new LinkedBlockingQueue<Message>(); 

client 
-------- 
    Message response = applicationResponses.poll(); 

server; 
    applicationResponses.offer(message); 

回答

3

使用take,而不是poll - take會阻塞線程,直到一個對象是準備好了,而poll只會返回null如果隊列爲空

+0

感謝它的工作原理.. – Ratha 2013-05-01 05:21:13