gpt4 book ai didi

java - LinkedTransferQueue 是阻塞队列还是非阻塞队列?

转载 作者:行者123 更新时间:2023-12-02 03:26:45 27 4
gpt4 key购买 nike

我读到了java中的并发队列,并且我对LinkedTransferQueue感到困惑。 LinkedTransferQueue 的类型是什么(阻塞队列还是非阻塞队列)?我读到 LinkedTransferQueue 使用 Unsafe 的 CAS(比较和交换)方法和 Park 方法,并且由像 ConcurrentLinkedQueue 这样的节点和指针组成,它插入了它是一个非阻塞队列的想法。但接口(interface) TransferQueue 扩展了 BlockingQueue。看起来很暧昧。 LinkedTransferQueue到底是阻塞队列还是非阻塞队列?

最佳答案

LinkedTransferQueue 是一个无界队列,因此尽管它是 BlockingQueue,但它永远不会真正达到普通 BlockingQueue 实现可能实现的常见生产者/消费者模式。

那么,它到底是阻塞还是不阻塞?其实还是要看操作。例如,下面列出了一些。

非阻塞操作:

  • 报价
  • 放入
  • 添加
  • 投票
  • 尝试传输

阻止操作:

  • 采取
  • 转账

重点是,如果一个操作可以在不阻塞的情况下实现,那么它就会实现。由于 LinkedTransferQueue 被强制为无界,因此它可以摆脱阻塞和非阻塞操作。

如果有兴趣,我通过查看 Java 8 实现发现了这一点。

关于java - LinkedTransferQueue 是阻塞队列还是非阻塞队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748576/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com