美文网首页
cas和synchronize

cas和synchronize

作者: 相信灬你一直在 | 来源:发表于2019-10-11 16:05 被阅读0次

CAS与Synchronized的使用情景
1、对于资源竞争较少(线程冲突较轻)的情况,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态到内核态间的切换操作额外浪费消耗cpu资源;而CAS基于操作借助C来调用CPU底层指令实现的,不需要进入内核,不需要切换线程,操作自旋几率较少,因此可以获得更高的性能。

2、对于资源竞争严重(线程冲突严重)的情况,CAS自旋的概率会比较大,从而浪费更多的CPU资源,效率低于synchronized。

补充: synchronized在jdk1.6之后,已经改进优化。synchronized的底层实现主要依靠Lock-Free的队列,基本思路是自旋后阻塞,竞争切换后继续竞争锁,稍微牺牲了公平性,但获得了高吞吐量。在线程冲突较少的情况下,可以获得和CAS类似的性能;而线程冲突严重的情况下,性能远高于CAS。

synchronized锁出现异常会自动释放锁,会带来问题。
————————————————
版权声明:本文为CSDN博主「MrLiarStudio」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MrLiar17/article/details/81333000

相关文章

  • synchronize和CAS

    程序有两种不同的级别:用户态、内核态原来的操作系统中没有这种级别之分,因此一个程序可能访问其他程序的内存,就可能把...

  • cas和synchronize

    CAS与Synchronized的使用情景1、对于资源竞争较少(线程冲突较轻)的情况,使用synchronized...

  • 你了解CAS吗?

    为什么要引入CAS? jdk引入CAS的时候,是因为之前有了synchronize,而且我们知道synchroni...

  • juc12-ConcurrentHashMap与Concurre

    一 ConcurrentHashMap 支持并发访问的HashMap cas方式修改头节点,synchronize...

  • Reent和Synchronize区别 ReentrantLock和Synchronize都是一个可重入锁 区别在...

  • Java多线程核心技术笔记2

    wait和notify wait和notify必须在synchronize方法或synchronize块中使用 调...

  • 高并发

    CAS锁是包装改资源的时候只被改一次,不会被多次修改。但是有 AQS面试问过,但是一无所知 synchronize...

  • synchronize 和 Lock

    摘抄自http://www.cnblogs.com/dolphin0520/p/3923167.html sync...

  • php cas单点登录

    一、CAS简介1、结构体系从结构体系看, CAS 包括两部分: CAS Server 和 CAS Client 。...

  • CAS单点登录基本概念

    1.体系结构 从结构体系看,CAS 包括两部分: CAS Server 和 CAS Client 。 CAS Se...

网友评论

      本文标题:cas和synchronize

      本文链接:https://www.haomeiwen.com/subject/vdfxmctx.html