2012-12-11 26 views
5

快速澄清,请的Java -BlockingQueue - 多生产,单次消费

我知道BlockingQueues是线程安全的。

这是否意味着我可以通过一个单一的参照阻塞队列谁可以不管三七二十一丢弃事件所有的生产者由单个消费者消费,并没有被破坏?

否则不得不产生多达20 BlockingQueues可能或不可能定期更新,并以任何效率阅读它们似乎是一项难以克服的任务。

回答

5

这是否意味着我可以将阻塞队列的单个引用传递给所有可以将事件放在一个消费者中并且不会中断的生产者?

一句话,是的。这是安全的。引用documentation

BlockingQueue实现是线程安全的。所有排队方法都使用内部锁或其他形式的并发控制自动实现其效果。

+0

精彩。它似乎工作,但我不想在一年后遇到问题。 – Sheriff

1

如果它是线程安全的,那意味着你只需要一个可以被所有线程访问的队列实例。并发数据结构管理这些访问。 这也意味着,没有从你身边的同步是必要的。

+0

非常感谢。只是想在我投身这条路线之前保持安全。在过去,我一直都有生产者/消费者对手,但我现在想集中精力。 – Sheriff

+1

并发收集似乎是一个节省的方式去为将来他们也相当高性能的;) – Zhedar

相关问题