併發隊列ConcurrentLinkedQueue和阻塞隊列LinkedBlockingQueue使用場景總結

轉自http://www.xuebuyuan.com/2220967.html
適用阻塞隊列的好處:多線程操作共同的隊列時不需要額外的同步,另外就是隊列會自動平衡負載,即那邊(生產與消費兩邊)處理快了就會被阻塞掉,從而減少兩邊的處理速度差距。
當許多線程共享訪問一個公共 collection 時,ConcurrentLinkedQueue 是一個恰當的選擇。
LinkedBlockingQueue 多用於任務隊列
ConcurrentLinkedQueue  多用於消息隊列
多個生產者,對於LBQ性能還算可以接受;但是多個消費者就不行了mainLoop需要一個timeout的機制,否則空轉,cpu會飆升的。LBQ正好提供了timeout的接口,更方便使用
如果CLQ,那麼我需要收到處理sleep
單生產者,單消費者  用 LinkedBlockingqueue
多生產者,單消費者   用 LinkedBlockingqueue
單生產者 ,多消費者   用 ConcurrentLinkedQueue
多生產者 ,多消費者   用 ConcurrentLinkedQueue
發佈了42 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章