在我的應用程序數據生成速度(它是存儲在concurrentLinkedQueue)大於我可以消耗單線程。如何在多線程上迭代concurrentLinkedQueue?
我決定先創建4個線程來使用數據,以防止我的應用程序出現「內存不足異常」。
問題:
- 用於與例如上述問題的任何其他更好的設計?
- 我們可以迭代concurrentLinkedQueue和多個線程,並在迭代時刪除元素嗎?
內存一致性效果:當存在其他併發集合,事先將對象放入到該元素的在接入 或去除從所述的ConcurrentLinkedQueue之後的 的ConcurrentLinkedQueue發生-前行動在一個線程 動作另一個 線程。
我想看看[阻塞隊列(HTTPS:/ /docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html),因爲您的消費者線程可能不得不在處理「生產者」時處理這種情況。然後你可以通過發送一些特殊的項目給他們停止線程(4份,所以每個線程將消耗一個) – tevemadar
@tevemadar感謝您的建議:) –