在我的应用程序数据生成速度(它是存储在concurrentLinkedQueue)大于我可以消耗单线程。如何在多线程上迭代concurrentLinkedQueue?
我决定先创建4个线程来使用数据,以防止我的应用程序出现“内存不足异常”。
问题:
- 用于与例如上述问题的任何其他更好的设计?
- 我们可以迭代concurrentLinkedQueue和多个线程,并在迭代时删除元素吗?
内存一致性效果:当存在其他并发集合,事先将对象放入到该元素的在接入 或去除从所述的ConcurrentLinkedQueue之后的 的ConcurrentLinkedQueue发生-前行动在一个线程 动作另一个 线程。
我想看看[阻塞队列(HTTPS:/ /docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html),因为您的消费者线程可能不得不在处理“生产者”时处理这种情况。然后你可以通过发送一些特殊的项目给他们停止线程(4份,所以每个线程将消耗一个) – tevemadar
@tevemadar感谢您的建议:) –