我对与Java BlockingQueue完全相同的数据结构感兴趣,但是它必须能够将队列中的对象分批处理。换句话说,我希望生产者能够将对象放入队列中,但是在消费者获取元素之前,必须等待一定数量(即批量大小)的对象进入到队列中。
一旦队列达到批量大小后,生产者必须等待消费者消费完队列中的所有元素,然后开始生产新的元素,消费者再次等待达到批量大小。
是否存在类似的数据结构?或者我应该自己写一个(我不介意),只是不想浪费时间去重复造轮子。
更新
可能需要澄清一下:
情况始终如下。可以有多个生产者向队列添加物品,但是从队列中取出物品的消费者永远只有一个。
现在的问题在于,这些设置会并行和串行地进行。换句话说,生产者为多个队列生产物品,而消费者本身也可以是生产者。这可以更容易地考虑为生产者、消费者-生产者以及最终消费者的有向图。
生产者应等待队列为空 (@Peter Lawrey),因为每个设置都将在一个线程中运行。如果让它们仅在空间可用时生产,您最终会面临太多的线程试图同时处理太多的事情的情况。
也许将其与执行服务结合使用可以解决问题?