首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinkedTransferQueue阻塞还是不阻塞队列?

LinkedTransferQueue阻塞还是不阻塞队列?
EN

Stack Overflow用户
提问于 2016-08-03 16:03:14
回答 2查看 470关注 0票数 0

我在java中读到了并发队列,并且收到了关于LinkedTransferQueue的混淆。什么是LinkedTransferQueue类型(它是阻塞队列还是非阻塞队列)?我读过LinkedTransferQueue使用CAS (比较和交换)方法和park (比较和交换)方法不安全,并且由节点和指针(如ConcurrentLinkedQueue )组成,它推动了这样的想法,即它是一个非阻塞队列。但是接口TransferQueue扩展了TransferQueue看起来模棱两可。最后,LinkedTransferQueue阻塞还是不阻塞队列?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-03 20:49:04

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

那么,它是阻塞还是不阻塞?这实际上取决于手术。例如,下面列出了几个。

非阻塞操作:

  • offer
  • put
  • add
  • poll
  • tryTransfer

封锁行动:

  • take
  • transfer

关键是,如果一个操作可以实现而不阻塞它就会实现。由于LinkedTransferQueue必须是无界的,所以它可以同时执行阻塞操作和非阻塞操作。

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

票数 3
EN

Stack Overflow用户

发布于 2016-09-06 09:57:54

来自Javadoc

一种基于链接节点的可选有界阻塞队列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38748576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档