如何获得固定大小的队列

Nix*_*Nix 1 java multithreading java.util.concurrent

我想在 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..");
}
Run Code Online (Sandbox Code Playgroud)

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

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

Dmi*_*sev 5

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

new LinkedBlockingQueue<>(10);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用offer()方法将值插入其中,false如果队列已满,该方法将不执行任何操作并返回。