并发链接队列的Java文档清楚地表明它是无限制的线程安全队列。然而,链接传输队列的javadoc仅提及队列的无限性质,并且没有提及线程安全性
我不是指转移方法。
生产者调用add方法和Consumer调用poll方法。
答案 0 :(得分:1)
简而言之,答案是肯定的,类j.u.c.LinkedTransferQueue
是线程安全的。由于集合类是线程安全的,因此您可以安全地从任何线程调用其任何方法,包括add
和poll
。
javadoc中的以下词语应被视为证明:
内存一致性效果:与其他并发集合一样,在将对象放入LinkedTransferQueue之前,线程中的操作发生在从另一个线程中的LinkedTransferQueue访问或删除该元素之后的操作之前。
同样j.u.c.BlockingQueue
在单线程环境中没有多大意义。我的意思是你可以使用它,但有更简单的j.u.Queue
接口等轻量级解决方案。 BlockingQueue
的主要应用领域是生产者 - 消费者应用程序,其中消费者能够阻止等待下一个元素,这可能仅来自另一个线程,因为当前线程被阻止。由于j.u.c.TransferQueue
扩展了它,因此它的实现也应该是线程安全的。