2012-12-11 84 views
5

快速澄清,請的Java -BlockingQueue - 多生產,單次消費

我知道BlockingQueues是線程安全的。

這是否意味着我可以通過一個單一的參照阻塞隊列誰可以不管三七二十一丟棄事件所有的生產者由單個消費者消費,並沒有被破壞?

否則不得不產生多達20 BlockingQueues可能或不可能定期更新,並以任何效率閱讀它們似乎是一項難以克服的任務。

回答

5

這是否意味着我可以將阻塞隊列的單個引用傳遞給所有可以將事件放在一個消費者中並且不會中斷的生產者?

一句話,是的。這是安全的。引用documentation

BlockingQueue實現是線程安全的。所有排隊方法都使用內部鎖或其他形式的併發控制自動實現其效果。

+0

精彩。它似乎工作,但我不想在一年後遇到問題。 – Sheriff

1

如果它是線程安全的,那意味着你只需要一個可以被所有線程訪問的隊列實例。併發數據結構管理這些訪問。 這也意味着,沒有從你身邊的同步是必要的。

+0

非常感謝。只是想在我投身這條路線之前保持安全。在過去,我一直都有生產者/消費者對手,但我現在想集中精力。 – Sheriff

+1

併發收集似乎是一個節省的方式去爲將來他們也相當高性能的;) – Zhedar

相關問題