2010-05-03 42 views
0

我創建了一個像LinkedBlockingQueue(1)一樣的Java LinkedBlockingQueue來將隊列的大小限制爲1.但是,在我的測試中,這似乎被忽略,並且在任何給定時間通常有幾件事情在隊列中。爲什麼是這樣?LinkedBlockingQueue限制被忽略?

+0

你究竟如何測試?你能粘貼一些代碼嗎? 「似乎被忽略」 - 似乎還是你確定? – doublep 2010-05-03 22:02:36

回答

0

如何檢查隊列中的條目數量?如果調用size(),則應始終返回0或1.

當隊列達到容量時,put()調用將被阻塞。當你的任務很短時,這可能會給你一個錯覺,認爲隊列中有多個事物。

+0

這個問題似乎是因爲事情並沒有按照正確的順序打印到控制檯,所以看起來好像有很多東西在那裏。但是你是對的,size()總是顯示1或0。 – tgguy 2010-05-03 22:06:03

0
LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(5); 
queue.add("ddd"); 
queue.count // =5 
queue.size // =1 
queue.remainingCapacity() // =4