分析BlockingQueue使用示例

发布于 2024-11-18 09:49:57 字数 378 浏览 2 评论 0原文

我正在查看“基于典型生产者-消费者场景的使用示例”: http://download .oracle.com/javase/1.5.0/docs/api/java/util/concurrent/BlockingQueue.html#put(E)

吗?

我认为 put 和 take 操作需要锁定某些内容 继续修改之前的资源队列,但这里没有发生这种情况。

此外,如果这是一种并发类型的队列,则缺少锁是可以理解的,因为并发队列上的原子操作不需要锁。

I was looking at the "usage example based on a typical producer-consumer scenario" at:
http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/BlockingQueue.html#put(E)

Is the example correct?

I think the put and take operations need a lock on some resource before proceeding to modify the queue, but that is not happening here.

Also, had this been a Concurrent kind of a queue, the lack of locks would have been understandable since atomic operations on a concurrent queue do not need locks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若水微香 2024-11-25 09:49:57

我认为 api 中编写的内容不需要添加任何内容:

队列还支持在检索元素时等待队列变为非空的操作,以及在存储元素时等待队列中的空间变为可用的操作。

BlockingQueue 实现是线程安全的。所有排队方法都使用内部锁或其他形式的并发控制以原子方式实现其效果。

I do not think there is something to add to what is written in api:

A Queue that additionally supports operations that wait for the queue to become non-empty when retrieving an element, and wait for space to become available in the queue when storing an element.

BlockingQueue implementations are thread-safe. All queuing methods achieve their effects atomically using internal locks or other forms of concurrency control.

陌路黄昏 2024-11-25 09:49:57

BlockingQueue 只是一个接口。该实现可以使用同步块、锁或无锁。 AFAIK 大多数方法在实现中都使用 Lock。

BlockingQueue is just an interface. This implementation could be using synchronzed blocks, Lock or be lock-free. AFAIK most methods use Lock in the implementation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文