问题描述
假设我将arrayBlockingQueue
和linkedBlockingQueue
的容量都设置为100。在每个容量中仅添加10个元素。
即使90个元素为空,array
也会保持满容量吗?我的意思是说它将有10个元素和90个null?
另一件事,在这种情况下linked
的行为如何?它会有10个或100个节点吗?会有90个“空值节点”吗?
有人可以向我解释一下吗?在这种情况下,他们的表现如何?
解决方法
对于ArrayBlockingQueue
,它将创建一个大小为100的数组。它将包含您插入的10个元素,其余元素为null
。
在LinkedBlockingQueue
的情况下,将仅创建10个节点-此处的容量用作创建具有最大条目限制的所谓绑定队列的限制(在多线程环境中,可能是方便,以免出现内存不足的情况。