aqs clq

ConcurrentLinkedQueue(简称clq)
头尾节点的更新使用懒更新
因为clq使用cas操作更行tail和head,CAS即乐观锁,而只有在真正乐观的时候(竞争不够激烈)使用CAS才比加锁 park线程要快。为了避免竞争太激烈而造成cas一直失败,即让情况更加符合所谓的乐观情况,懒更新就可以起到一定作用。
AQS的锁获取也是先尝试几次CAS,如果都失败了则把线程加入等待队列,避免了极端情况(cas一直失败cpu一直空转)的发生。
clq没有这样做,他只是使用懒更新来尽量避免出现竞争太激烈的cas全失败的情况。原因可能是这样:1,clq适用于特定场景,典型如生产者消费者,对于单纯的队列操作(队头取元素,队尾入元素)一般比较快,即使并发很高也很难发生cas一直失败的情况。懒更新
就足够了。而aqs面对的情况则要更加复杂,加锁释放锁之间有可能持续时间非常长(例如加锁循环处理表的数据等),几次cas+park线程无疑更加适用一般情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值