目前,我正在用Java阅读Collections。如我所读,LinkedTransferQueueLinkedBlockingQueue的超集,其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不能保证不受限制。

09-29 19:47