【发布时间】:2012-01-05 13:54:20
【问题描述】:
我想创建一个阻塞队列,它根据自定义规则而不是队列中的项目数来阻塞生产者。
例如:
Producer 生成一些文件并放入队列中。消费者经过一些分析后将它们转移到特定位置。
对于上述情况,如果队列中的总文件大小达到某个阈值,我希望生产者等待生成新文件。如果总大小不超过阈值,队列可以接受任意数量的文件。
【问题讨论】:
-
到现在为止你找到解决办法了吗?
-
这是一个非常古老的问题。而且我还没有在任何实际应用程序中使用阻塞队列。所以在那之后我并没有很努力地寻找解决方案。
-
我也有同样的需求,找不到现成的东西。我可能只是从 Java 中复制粘贴 LinkedBlockingQueue 的代码(由 Doug Lea 编写)并修改检查“容量”和“计数”的现有逻辑以实际调用自定义检查或其他内容。想不出任何更简单/更短的方法。