LinkedTransferQueue线程是否安全?

时间:2017-07-12 09:26:19

标签: java collections concurrency thread-safety

并发链接队列的Java文档清楚地表明它是无限制的线程安全队列。然而,链接传输队列的javadoc仅提及队列的无限性质,并且没有提及线程安全性

我不是指转移方法。

生产者调用add方法和Consumer调用poll方法。

1 个答案:

答案 0 :(得分:1)

简而言之,答案是肯定的,类j.u.c.LinkedTransferQueue是线程安全的。由于集合类是线程安全的,因此您可以安全地从任何线程调用其任何方法,包括addpoll

javadoc中的以下词语应被视为证明:

  

内存一致性效果:与其他并发集合一样,在将对象放入LinkedTransferQueue之前,线程中的操作发生在从另一个线程中的LinkedTransferQueue访问或删除该元素之后的操作之前。

同样j.u.c.BlockingQueue在单线程环境中没有多大意义。我的意思是你可以使用它,但有更简单的j.u.Queue接口等轻量级解决方案。 BlockingQueue的主要应用领域是生产者 - 消费者应用程序,其中消费者能够阻止等待下一个元素,这可能仅来自另一个线程,因为当前线程被阻止。由于j.u.c.TransferQueue扩展了它,因此它的实现也应该是线程安全的。