2010-05-03 45 views
0

我创建了一个像LinkedBlockingQueue(1)一样的Java LinkedBlockingQueue来将队列的大小限制为1.但是,在我的测试中,这似乎被忽略,并且在任何给定时间通常有几件事情在队列中。为什么是这样?LinkedBlockingQueue限制被忽略?

+0

你究竟如何测试?你能粘贴一些代码吗? “似乎被忽略” - 似乎还是你确定? – doublep 2010-05-03 22:02:36

回答

0

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

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

+0

这个问题似乎是因为事情并没有按照正确的顺序打印到控制台,所以看起来好像有很多东西在那里。但是你是对的,size()总是显示1或0。 – tgguy 2010-05-03 22:06:03

0
LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(5); 
queue.add("ddd"); 
queue.count // =5 
queue.size // =1 
queue.remainingCapacity() // =4