java-8 - 使用执行服务的生产者消费者模式中的死锁场景
问题描述
在使用 ExecutorService 的生产者消费者模式中,如果所有线程都开始执行消费者任务并阻塞自己等待生产者无限期推送数据怎么办?
这会发生吗?如果我说 X 没有 Url 的下载,然后解析内容并存储在数据库中。我使用多线程的生产者和消费者类比来解决问题。
生产者将下载内容并将数据放入大小为 Y 的 BlockingQueue(例如 Y
现在说我创建了一个 N << X 的线程池,其中 N << X。添加我分配 X 个生产者任务和 X 个消费者任务。
在这种情况下,如果所有线程都执行消费者任务并在尝试从阻塞队列中收集数据时被阻塞。那么基本上我没有线程来执行生产者任务,我陷入了僵局。
解决方案
推荐阅读
- react-native - FlatList 无法水平滚动
- swift - 使用 UIViewControllerRepresentable 更新值时弹出窗口崩溃
- apache-spark - Does Spark support load balancing in heterogeneous clusters?
- django - 如何将字段添加到查询集并在循环中填充它?
- assembly - 在 MASM64 中是否有将 16 位立即数压入堆栈的指令?
- assembly - 在 6502 汇编器中编写子程序的最佳方法?
- mongodb - 通过聚合查找查询预订的可用房间
- android - 如何使用 SDK 版本 30 为 Android 构建 Godot 项目?
- mysql - 如何在 MySQL 中查询 AM 和 PM varchar 时间之间的数据
- angularjs - 如何在 chrome 和 windows 7 中解决“您的连接不是私有的”