(在我们的产品中找到了这段代码)
我读到有关ArrayBlockingQueue的内容,发现它是有界的和被阻止的。
现在,如果我们使用-BlockingBuffer.decorate(new BoundedFifoBuffer()
-看起来类似于ArrayBlockingQueue。
请帮助了解它们是否相似或不同以及在什么情况下使用什么?
最佳答案
ArrayBlockingQueue
是标准库,而BlockingBuffer
/ BoundedFifoBuffer
不是。如果没有特殊原因,这将是选择ArrayBlockingQueue
的充分理由。
另一个明显的区别是Buffer
是一个集合,而不是Queue
,而ArrayBlockingQueue
是。如果您的用例是队列,则最好使用ArrayBlockingQueue
,因为有些库要求使用Queue
。
最后,ArrayBlockingQueue
使用了更复杂的并发控制,因此,如果它表现更好,我也不会感到惊讶。