如何自定义 BlockingQueue 的阻塞行为

2022-09-04 04:35:32

我想创建一个阻塞队列,该队列根据自定义规则而不是队列中的项目数来阻止生产者。

例如:

Producer 生成一些文件并放入队列中。消费者在经过一些分析后将它们转移到特定位置。

对于上述方案,我希望生产者在队列中文件总数达到某个阈值时等待生成新文件。如果总大小未超过阈值,则队列可以接受任意数量的文件。


答案 1

我可能会子类化一个,例如ArrayBlockingQueue,并添加一个初始化为阈值的简单,并在达到0时启用各种/方法。BlockingQueueCountDownLatchtakeremove


答案 2

我认为您必须自己实现此锁定机制。您可以使用等待/通知或重新进入锁定/条件,一个长变量保存组合长度和一个链接列表保存文件。


推荐