对于BlockingQueue/LinkedBlockingQueue与jsr166y和Java 7中的新TransferQueue/LinkedTransferQueue类型之间的区别,我有些困惑

最佳答案

TransferQueue JavaDocs:



换句话说,当您使用BlockingQueue时,您只能将元素放入队列(如果队列已满,则将其阻塞)。使用TransferQueue,您也可以阻塞,直到其他线程收到您的元素为止(您必须为此使用新的transfer方法)。这是区别。使用BlockingQueue,您不能等到其他线程删除您的元素(仅当您使用SynchronousQueue时,但这实际上不是队列)。

除此之外,TransferQueue还是BlockingQueue。在TransferQueue中检查新的可用方法:http://download.oracle.com/javase/7/docs/api/java/util/concurrent/TransferQueue.html(transfer,tryTransfer,hasWaitingConsumer,getWaitingConsumerCount)。

Collections Framework Enhancements in Java SE 7明确表示:

关于java - BlockingQueue和TransferQueue之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7317579/

10-09 07:03