1

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

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

4

2 回答 2

2

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

于 2013-06-26T09:40:01.133 回答
0

任何BlockingQueue实现有什么问题?如果队列已满,您的消费者可以调用哪个是非阻塞的,而您的生产者可以调用哪个阻塞。peek() poll()put(E e)

更新

如果队列被用于非常密集的任务,那么LMAX 的中断环缓冲区可能是性能最高的队列结构。

于 2013-06-26T09:37:37.957 回答