我想创建一个阻塞队列,它根据自定义规则而不是队列中的项目数来阻塞生产者。
例如:
生产者生产一些文件并放入队列中。消费者经过一些分析后将它们转移到特定位置。
对于上述场景,我希望生产者在队列中的总文件大小达到某个阈值时等待生成新文件。如果总大小不超过阈值,队列可以接受任意数量的文件。
最佳答案
我可能会将 BlockingQueue
子类化,例如 ArrayBlockingQueue
并添加一个简单的 CountDownLatch
,它被初始化为阈值并在达到 0 时启用各种take
/remove
方法。
关于java - 如何自定义 BlockingQueue 的阻塞行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8256324/