如何自定义BlockingQueue的阻塞行为

Ami*_*pta 13 java queue

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

例如:

生产者生成一些文件并放入队列.一些分析后,消费者将它们转移到特定位置.

对于上面的场景,如果队列中的总文件大小达到某个阈值,我希望生产者等待生成新文件.如果总大小不超过阈值,则队列可以接受任意数量的文件.

aio*_*obe 4

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