gpt4 book ai didi

java - Producer/Consumer : One Producer, 多个消费者,每个都处理相同的数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:27 26 4
gpt4 key购买 nike

我有一个生产者/消费者场景,我不希望一个生产者交付产品,也不希望多个消费者消费这些产品。然而,常见的情况是交付的产品仅由一个消费者消费,而其他消费者永远看不到该特定产品。我不想完成的是每个消费者消费一次产品而没有任何类型的阻塞。

我的第一个想法是使用多个 BlockingQueues,每个 Consumer 一个,然后让 Producer 将每个产品按顺序放入所有可用的 BlockingQueues 中。但是,如果其中一个队列阻塞(例如,队列已满),生产者将无法继续。另一方面,为每个产品生成一个新线程以将产品放入队列似乎不是一个好的解决方案,因为如果队列已满,将会创建越来越多的线程。

问题是,在我的场景中,一个消费者可能需要比另一个消费者更多的时间来处理产品,具体取决于输入。调整 BlockingQueues 的容量也很困难,因为消费者的处理时间并不是真正可预测的。

可以想出一种更优雅的解决方案吗?或者是否可以动态增加/减少 BlockingQueues 的容量以平衡填充水平?

最佳答案

看看 Guava 的 EventBus ,Guava 库的一部分,处理进程内 PubSub 式通信。它可能会满足您的需求,让您免于重新发明一些轮子。

如果您正在寻找进程间通信,请考虑像 Evgeniy 提议的消息队列。

关于java - Producer/Consumer : One Producer, 多个消费者,每个都处理相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com