【发布时间】:2017-07-24 22:20:10
【问题描述】:
在我的应用程序中,数据生成速度(存储在 concurrentLinkedQueue 中)大于我可以使用单线程消耗的速度。
我决定从创建 4 个线程来使用数据开始,以防止我的应用程序出现“内存不足异常”。
问题:
- 对于上述问题还有其他更好的设计示例吗?
- 我们可以用多个线程迭代 concurrentLinkedQueue 并在迭代时删除元素吗?
内存一致性效果:与其他并发集合一样, 在将对象放入 ConcurrentLinkedQueue 发生在访问之后的操作之前 或从另一个 ConcurrentLinkedQueue 中删除该元素 线程。
【问题讨论】:
-
我会看blocking queues,因为您的消费者线程可能不得不处理当他们“超过”生产者时的情况。然后您可以通过向线程发送一些特殊项目来停止线程(4 个副本,因此每个线程将消耗一个)
-
@tevemadar 感谢您的建议 :)
标签: java multithreading concurrency