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。
您可以使用LinkedBlockingQueuefrom java.util.concurrent- 它允许您指定队列的固定大小。
new LinkedBlockingQueue<>(10);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用offer()方法将值插入其中,false如果队列已满,该方法将不执行任何操作并返回。
| 归档时间: |
|
| 查看次数: |
1788 次 |
| 最近记录: |