如何获得固定大小的队列

时间:2016-10-20 07:42:54

标签: java multithreading java.util.concurrent

我试图在java中创建一个固定大小的Queue,我只想在Queue中存储最多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..");
}

我有另一个Runnable类,我正在运行22个线程。此条件应仅添加Customer类的0-9个对象。但是,sitt.size()甚至超过20.有谁能告诉我这里的问题是什么?即使if条件被忽略。

P.S:我在这里使用Queue的原因是因为我需要FIFO。

1 个答案:

答案 0 :(得分:3)

您可以使用LinkedBlockingQueue中的java.util.concurrent - 它允许您指定队列的固定大小。

new LinkedBlockingQueue<>(10);

然后你可以使用offer()方法将值插入其中,如果队列已满,则返回false