生产者消费者阻止队列

时间:2013-06-26 09:26:21

标签: java queue blocking

我的情况是我有多个生产者和单个消费者。 出于性能原因,我不希望消费者处于任何阻塞状态,但由于可能会有更多的生产者,他们应该阻止"阻止"如果队列已满。

是否有任何队列向我提供此类行为,或者如何根据我的需要修改ArrayBlockingQueue?

2 个答案:

答案 0 :(得分:2)

对消费者使用非阻塞ArrayBlockingQueue.poll,为生产者阻止ArrayBlockingQueue.put

答案 1 :(得分:0)

任何BlockingQueue实施有什么问题?您的消费者可以调用非阻塞的 peek() poll(),并且您的生产者可以调用put(E e),如果队列已满,则会阻塞。{/ p>

<强>更新

如果队列被用于执行非常密集的任务,那么LMAX's disruptor ring buffer可能是性能最高的排队结构。