【问题标题】:What are the advantages of Blocking Queue in Java?Java中阻塞队列的优点是什么?
【发布时间】:2010-10-24 02:12:26
【问题描述】:

我正在开展一个项目,该项目使用一个队列来保存有关需要发送到远程主机的消息的信息。在这种情况下,一个线程负责将信息放入队列,另一个线程负责从队列中获取信息并将其发送。第二个线程需要定期检查队列中的信息。

但后来我发现这是对轮子的重新发明 :) 我可以为此使用阻塞队列。

为上述应用程序使用阻塞队列还有哪些其他优势? (例如:性能、代码的可修改性、任何特殊技巧等)

【问题讨论】:

标签: java performance data-structures queue


【解决方案1】:

主要优点是BlockingQueue 提供了正确的、线程安全的实现。多年来,开发人员自己实现了此功能,但要做到正确却很棘手。现在,运行时有一个由并发专家开发、审查和维护的实现。

队列的“阻塞”特性有几个优点。首先,在添加元素时,如果队列容量有限,那么内存消耗也会受到限制。此外,如果队列消费者远远落后于生产者,生产者自然会受到限制,因为他们必须等待添加元素。从队列中取出元素时,主要优点是简单;永远等待是微不足道的,正确等待指定的超时只是稍微复杂一点。

【讨论】:

    【解决方案2】:

    您使用阻塞队列消除的关键是“轮询”。这就是你说的地方

    在这种情况下,第二个线程需要定期检查队列中的信息。

    这可能非常低效 - 占用了很多不必要的 CPU 时间。它还可能引入不必要的延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2014-04-30
      • 1970-01-01
      相关资源
      最近更新 更多