Java -BlockingQueue -- 多个生产者,单个消费者

5

请快速澄清一下

我知道 BlockingQueues 是线程安全的。

这是否意味着我可以向所有生产者传递单个阻塞队列的引用,让他们随意丢弃事件,以供单个消费者消耗,而不会有任何干扰呢?

否则,生产多达20个可能或可能没有定期更新的 BlockingQueues 并以任何有效的方式读取它们,似乎是一项不可克服的任务。


可能是[多个阻塞队列,单个消费者]的重复问题。Multiple blocking queues, single consumer - Amir Fo
2个回答

5
这是否意味着我可以将一个阻塞队列的单个引用传递给所有生产者,他们可以随意地丢弃事件以供单个消费者消耗,而不会造成任何干扰?
简单来说,是的。这是安全的。引用文档的话:
“BlockingQueue实现是线程安全的。所有排队方法都使用内部锁或其他形式的并发控制原子地实现其效果。”

太好了。它似乎能正常工作,但我不想在一年后遇到问题。 - Sheriff

1

如果它是线程安全的,那就意味着你只需要一个实例队列,所有线程都可以访问。并发数据结构管理这些访问。

这也意味着你无需进行同步操作。

非常感谢。在我决定采用这种方法之前,我只是想确保安全。过去,我总是有生产者/消费者二元组,但现在我正在尝试集中化。 - Sheriff
1
并发集合似乎是未来的安全选择,因为它们也非常高效 ;) - Zhedar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接