首页 > 解决方案 > 使用执行服务的生产者消费者模式中的死锁场景

问题描述

在使用 ExecutorService 的生产者消费者模式中,如果所有线程都开始执行消费者任务并阻塞自己等待生产者无限期推送数据怎么办?

这会发生吗?如果我说 X 没有 Url 的下载,然后解析内容并存储在数据库中。我使用多线程的生产者和消费者类比来解决问题。

生产者将下载内容并将数据放入大小为 Y 的 BlockingQueue(例如 Y

现在说我创建了一个 N << X 的线程池,其中 N << X。添加我分配 X 个生产者任务和 X 个消费者任务。

在这种情况下,如果所有线程都执行消费者任务并在尝试从阻塞队列中收集数据时被阻塞。那么基本上我没有线程来执行生产者任务,我陷入了僵局。

标签: java-8producer-consumerthreadpoolexecutor

解决方案


推荐阅读