ArrayBlockingQueue v / s BlockingBuffer.decorate(new BoundedFifoBuffer()

时间:2014-03-18 14:48:08

标签: java collections concurrency

(在我们的制作中找到了这个代码)

我读到了有关ArrayBlockingQueue的内容,发现它已被限制并被阻止。 现在,如果我们使用 - BlockingBuffer.decorate(new BoundedFifoBuffer() - 看起来它类似于ArrayBlockingQueue。

请帮助理解它们是相似还是不同,以及在什么情况下使用什么?

1 个答案:

答案 0 :(得分:1)

ArrayBlockingQueue是标准库,而BlockingBuffer / BoundedFifoBuffer则不是。如果您没有特定原因,这将是您更喜欢ArrayBlockingQueue的充分理由。

另一个很大的区别是Buffer是一个集合,但不是Queue,而ArrayBlockingQueue是。如果您的用例是队列,则ArrayBlockingQueue会更好,因为有些库需要Queue

最后,ArrayBlockingQueue使用了更复杂的并发控制,所以如果它表现更好,我也不会感到惊讶。