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

标签 java collections concurrency

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

我阅读了有关 ArrayBlockingQueue 的内容,发现它是有界且阻塞的。 现在,如果我们使用 - BlockingBuffer.decorate(new BoundedFifoBuffer() - 看起来它与 ArrayBlockingQueue 类似。

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

最佳答案

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

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

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

关于java - ArrayBlockingQueue v/s BlockingBuffer.decorate(new BoundedFifoBuffer(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22482835/

相关文章:

c# - 我能有一本按日期排序的字典吗

go - 如何正确使用 channel 来控制并发?

java - package com.mysql.jdbc.PreparedStatement; 之间有什么区别?和 java.sql.PreparedStatement?

java - SSL Handshake Excetion : Failure in SSL library, 通常是协议(protocol)错误

java - 表达式开头错误: errors with two lines?

java - 对 CountedCompleter 的文档和来源感到困惑

python - 无法让多处理同时运行进程

java - 用变量替换 YAML 配置文件中的纯字符串

Java Generics - 类本身的子类?

Swift 集合扩展 : pick every other item