Java 中阻塞队列有哪些优点?
2022-09-02 20:30:33
我正在处理一个项目,该项目使用队列来保存有关需要发送到远程主机的消息的信息。在这种情况下,一个线程负责将信息放入队列,另一个线程负责从队列中获取信息并发送信息。第二个线程需要定期检查队列中的信息。
但后来我发现这是轮子的重新发明:)为此,我可以使用阻塞队列。
对上述应用程序使用阻塞队列的其他优点是什么?(例如:性能,代码的可修改性,任何特殊技巧等)
我正在处理一个项目,该项目使用队列来保存有关需要发送到远程主机的消息的信息。在这种情况下,一个线程负责将信息放入队列,另一个线程负责从队列中获取信息并发送信息。第二个线程需要定期检查队列中的信息。
但后来我发现这是轮子的重新发明:)为此,我可以使用阻塞队列。
对上述应用程序使用阻塞队列的其他优点是什么?(例如:性能,代码的可修改性,任何特殊技巧等)
主要优点是 a 提供了正确的线程安全实现。开发人员多年来一直自己实现此功能,但要正确使用是很棘手的。现在,运行时有一个由并发专家开发、审查和维护的实现。BlockingQueue
队列的“阻塞”性质有几个优点。首先,在添加元素时,如果队列容量有限,则内存消耗也会受到限制。此外,如果队列使用者远远落后于生产者,生产者自然会受到限制,因为他们必须等待添加元素。从队列中获取元素时,主要优点是简单;永远等待是微不足道的,正确等待指定的超时只是稍微复杂一些。
他们用阻塞队列消除的关键是“轮询”。这就是你说的地方
在这种情况下,第二个线程需要定期检查队列中的信息。
这可能非常低效 - 使用大量不必要的CPU时间。它还可能引入不必要的延迟。