Java 是否忽略LinkedBlockingQueue限制?

Java 是否忽略LinkedBlockingQueue限制?,java,concurrency,Java,Concurrency,我创建了一个类似于new LinkedBlockingQueue(1)的Java LinkedBlockingQueue,将队列大小限制为1。然而,在我的测试中,这似乎被忽略了,并且在任何给定的时间,队列中经常有一些东西。为什么会这样?您是如何检查队列中的条目数的?如果调用size(),它应始终返回0或1 当队列达到容量时,put()调用只是阻塞。当你有很短的任务时,这可能会给你一种错觉,认为队列中有多个东西。LinkedBlockingQueue queue=new LinkedBlockin

我创建了一个类似于new LinkedBlockingQueue(1)的Java LinkedBlockingQueue,将队列大小限制为1。然而,在我的测试中,这似乎被忽略了,并且在任何给定的时间,队列中经常有一些东西。为什么会这样?

您是如何检查队列中的条目数的?如果调用size(),它应始终返回0或1

当队列达到容量时,put()调用只是阻塞。当你有很短的任务时,这可能会给你一种错觉,认为队列中有多个东西。

LinkedBlockingQueue queue=new LinkedBlockingQueue(5);
LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(5);
queue.add("ddd");
queue.count // =5
queue.size // =1
queue.remainingCapacity() // =4
添加(“ddd”); queue.count/=5 queue.size/=1 queue.remainingCapacity()/=4
您如何准确地进行测试?你能粘贴一些代码吗?“似乎被忽略了”-似乎还是你确定?问题似乎是打印到控制台的东西没有按照正确的顺序,所以看起来里面有多个东西。但是您是对的,size()总是显示1或0。