加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 并发队列 – 一般问题(描述和用法)

发布时间:2020-12-15 00:43:13 所属栏目:Java 来源:网络整理
导读:我在掌握并发队列的想法时遇到了一些麻烦.我理解一个队列是FIFO,或先到先服务,数据结构. 现在,当我们添加并发部分时,我将其解释为线程安全(请告诉我,如果这是不正确的)事情变得有点模糊.并发是指各种线程可以添加到队列中,还是从队列中删除(服务项目)的方式
我在掌握并发队列的想法时遇到了一些麻烦.我理解一个队列是FIFO,或先到先服务,数据结构.

现在,当我们添加并发部分时,我将其解释为线程安全(请告诉我,如果这是不正确的)事情变得有点模糊.并发是指各种线程可以添加到队列中,还是从队列中删除(服务项目)的方式?并发是否为这种操作提供了一种排序感?

我非常感谢并发队列功能的一般描述.类似的帖子here并不像我希望的那样普遍.

还有并发优先级队列这样的东西吗?它的用途是什么?

非常感谢,对此主题的任何简短解释或有用的链接.

解决方法

BlockingQueue提供的开销很小的概念是领先一点.获取锁会调用相当大的开销.单独使用上下文切换,我们正在谈论成千上万的指令.不仅如此,一个线程的进度将直接影响另一个线程.现在,它没有几年前那么糟糕,但与非阻塞相比,它是实质性的.

BlockingQueue使用锁定进行互斥

ArrayBlockingQueue,LinkedBlockingQueue,PriorityBlockingQUeue:是三个阻塞队列的同时

ConcurrentLinkedQueue,java 1.7 LinkedTransferQueue:使用Michael和Scott,非阻塞队列算法.

在中等到低的争用(更多是真实场景)中,非阻塞队列显着地执行阻塞队列.

并注意史蒂夫关于缺乏瓶颈的评论.在激烈争用下,非阻塞算法可以在常量cas尝试上瓶颈,而阻塞将暂停线程.然后我们看到稍微强烈争用的BlockingQueue执行非阻塞队列,但这种类型的争用无论如何都不是常态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读