gpt4 book ai didi

java - Producer/Consumer——生产者无阻塞地向集合中添加数据,消费者批量消费集合中的数据

转载 作者:行者123 更新时间:2023-11-29 03:23:40 25 4
gpt4 key购买 nike

我有一个有点不寻常的生产者/消费者用例。我有一些生产者的真实用例,我希望他们能够在不阻塞的情况下将对象添加到集合中。消费者(只有一个)应该阻塞,直到集合中有一定数量的对象(例如 500),然后批量消费它们。虽然少于 500 个,但它应该阻塞并等待集合填满。我不介意队列是否在短时间内超过此值(700、1000 等)。

我目前似乎没有找到解决这个确切问题的方法。我正在考虑使用 ConcurrentLinkedQueue 并让消费者定期检查队列是否有足够的数据,但这似乎适得其反。

另一个想法是使用 LinkedBlockingQueue。生产者不会阻塞(除非队列已满,这意味着它具有 Integer.MAX_VALUE 值——这不是我的情况,所以一切都很好)。消费者将执行 queue.take() 并将元素添加到内部集合中。当内部集合达到 500 个元素时,它将批量消耗它们。

你有什么建议吗?

谢谢!

最佳答案

最后我选择了 LinkedBlockingQueue。

生产者将项目添加到队列中。

消费者将执行 queue.poll() 并将项目保存到内部集合中。当内部集合达到 500 个元素时,它将批量消耗它们。我还可以设置一些超时。例如,如果 X 秒过去了,我将使用该集合,即使它的项目少于所需的项目(例如 220)。

关于java - Producer/Consumer——生产者无阻塞地向集合中添加数据,消费者批量消费集合中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22211142/

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