美文网首页java
CAS 与 synchronized 的使用情景

CAS 与 synchronized 的使用情景

作者: 04f7029dba14 | 来源:发表于2019-09-26 09:48 被阅读0次

CAS 适用于写比较少的情况下(多读场景,冲突一般较少),synchronized 适用于写比较多的情况下(多写场景,冲突一般较多)。

  1. 对于资源竞争较少(线程冲突较轻)的情况,使用 synchronized 同步锁进行线程阻塞,唤醒切换,以及用户态内核态间的切换操作,都会额外消耗 cpu 资源;而 CAS 基于硬件实现,不需要进入内核,不需要切换线程,操作自旋几率较少,因此可以获得更高的性能
  2. 对于资源竞争严重(线程冲突严重)的情况,CAS 自旋的概率会比较大,从而浪费更多的 CPU 资源,效率低于 synchronized

Java 并发编程这个领域中,synchronized 关键字一直都被认为是元老级的角色,很多人都会称它为 “重量级锁”。但是,在 JavaSE1.6 之后,进行了主要包括为了减少获得锁和释放锁所带来的性能消耗,而引入了 偏向锁轻量级锁 以及其它各种优化,在某些情况下,synchronized 并不是那么重了。synchronized 的底层实现,主要依靠 Lock-Free 的队列,基本思路是 自旋后阻塞竞争切换后继续竞争锁稍微牺牲了公平性,但获得了高吞吐量。在线程冲突较少的情况下,可以获得和 CAS 类似的性能;而线程冲突严重的情况下,性能是远高于 CAS。

相关文章

  • cas和synchronize

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

  • CAS 与 synchronized 的使用情景

    CAS 适用于写比较少的情况下(多读场景,冲突一般较少),synchronized 适用于写比较多的情况下(多写场...

  • CAS 与 synchronized 的使用情景

    CAS 适用于写比较少的情况下(多读场景,冲突一般较少),synchronized 适用于写比较多的情况下(多写场...

  • CAS 与 synchronized 的使用情景

    CAS 适用于写比较少的情况下(多读场景,冲突一般较少),synchronized 适用于写比较多的情况下(多写场...

  • 6、多线程

    synchronized关键字与CAS机制 synchronized:悲观锁CAS 机制:乐观锁当程序的并发量比较...

  • ReentrantLock vs synchronized比较分

    ReentrantLock可以替代synchronized使用 cas(CompareAndSet) vs 锁升级...

  • Java并发CAS

    一、CAS和synchronized适用场景 1、对于资源竞争较少的情况,使用synchronized同步锁进行线...

  • CAS机制

    还有就是这个atomic包,使用可以达到synchronized的效果,实现原理就是CAS了。 CAS也叫自旋锁,...

  • CAS(自旋锁)

    synchronized能够保证线程安全,但synchronized是重量级锁,性能低;可以使用CAS进行锁优化,...

  • 深入理解CAS(乐观锁)

    深入理解CAS(乐观锁) java使用CAS之前 在JDK5之前Java语言是靠synchronized关键字保证...

网友评论

    本文标题:CAS 与 synchronized 的使用情景

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