目前,我正在用Java阅读Collections。如我所读,LinkedTransferQueue
是LinkedBlockingQueue
的超集,其put(E e)
方法将插入和对象并返回void,并且如果需要,将阻塞直到队列中的空间可用为止。但是我没有看到LinkedTransferQueue
的任何构造函数,该构造函数接受按大小限制它的能力。
因此,对LinkedBlockingQueue调用put
方法的方式和时间将被认为已满,因此会阻塞,因为我们没有在任何地方为其指定边界大小。
我碰到了以下几行我没有得到的代码。
TransferQueue<Integer> tq = new LinkedTransferQueue<>(); // not bounded.
tq.put(2); // blocks if bounded and full
第2行的注释是什么意思。
谢谢。
最佳答案
即使LinkedTransferQueue
不能限制容量,接口TransferQueue
仍可以限制实现。
像其他阻塞队列一样,TransferQueue可能会受到容量限制。
当前唯一的实现是无限的LinkedTransferQueue
,所以这只是措辞的问题。即TransferQueue
不能保证不受限制。