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

时间:2012-12-11 19:47:23

标签: java multithreading blockingqueue

请快速澄清

我知道BlockingQueues是线程安全的。

这是否意味着我可以将一个阻止队列的单个引用传递给所有生产者,这些生产者可以毫不犹豫地丢弃事件以供单个消费者使用,并且什么都不会中断?

否则不得不产生最多20个BlockingQueues,可能会或可能不会定期更新并以任何效率读取它们,这似乎是一项不可逾越的任务。

2 个答案:

答案 0 :(得分:5)

  

这是否意味着我可以将一个阻止队列的单个引用传递给所有生产者,这些生产者可以毫不犹豫地丢弃事件以供单个消费者使用,并且什么都不会中断?

总之,是的。这很安全。引用documentation

  

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

答案 1 :(得分:1)

如果它是线程安全的,则意味着您只需要该队列的一个实例,所有线程都可以访问该实例。并发数据结构管理这些访问。 这也意味着您无需进行同步。