(在我们的产品中找到了这段代码)

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

请帮助了解它们是否相似或不同以及在什么情况下使用什么?

最佳答案

ArrayBlockingQueue是标准库,而BlockingBuffer / BoundedFifoBuffer不是。如果没有特殊原因,这将是选择ArrayBlockingQueue的充分理由。

另一个明显的区别是Buffer是一个集合,而不是Queue,而ArrayBlockingQueue是。如果您的用例是队列,则最好使用ArrayBlockingQueue,因为有些库要求使用Queue

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

07-24 14:26