我想在java中創建一個固定大小的隊列,我只想在隊列中存儲最多10個對象。但是,隊列不斷存儲/添加對象並忽略if
條件。如何獲得固定大小的隊列
我的代碼:
Queue<Customer> sitt = new LinkedList<Customer>();
if(sitt.size() < 10) {
System.out.println("Added");
((LinkedList<Customer>)sitt).offer(cust);
}else {
System.out.println("No space..");
}
我還有一個運行的類,並且我運行22個線程。這種情況只應該添加Customer類的0-9
對象。但是,sitt.size()
甚至超過了20.有誰能告訴我這裏有什麼問題嗎?即使if
條件被忽略。
P.S:我在這裏使用Queue的原因是因爲我需要FIFO。
你爲什麼使用LinkedList?一個簡單的循環緩衝區也可以工作 – Domso
http://stackoverflow.com/questions/9580457/fifo-class-in-java – Stefan
由於你在一個多線程場景,你應該把你的條件,並添加一個同步塊。也許其他線程在其他線程添加其元素之前檢查隊列大小。 – Karura91