美文网首页
几句话总结CAS锁与synchronized差异

几句话总结CAS锁与synchronized差异

作者: fly先森 | 来源:发表于2018-12-14 09:14 被阅读0次

其实网上有很多做过实验对比的,这里就不一一叙述了,
总的来说就是,竞争少的情况下CAS优于synchronized,反之synchronized优于CAS。
刚开始接触CAS的时候,一听说是锁,还是非阻塞的,就觉得肯定比加锁快,其实不然,还是得透过现象看本质,不要管中窥豹。
我尝试用几句话总结:

  • CAS:一般是系统底层的一套指令,作用就是同一时刻做这套指令的时候,其他相同的指令的线程不会干扰,保持原子性,常用于自旋锁。
  • synchronized:加锁,同步代码块或者函数,当一个线程拿到锁后,其他线程等待,直到拿到锁的时候释放锁。

根据上述,我们可以知道,CAS失败的情况下,自旋锁会一直旋转,synchronized虽然不会旋转,但是在获得锁的情况下,除了异常,其他情况下是肯定成功的。
所以两者的时间差别就是,自旋的时间和线程上下文切换的时间,虽然在其他资源在充足情况下,自旋成功下的时间肯定比线程加锁要来的快,但是你考虑下,如果竞争很激烈的情况下,是不是只有一个CAS能成功,那么其他的都是失败自旋,那么在这种情况下,CPU的资源的消耗可以说十分大的,那我还不如给这个共享资源加锁,剩下的线程等待不占用CPU资源,这种情况下,你可以考虑负载均衡,你可以考虑在别的情况下并行或者并发处理别的事务,都可以,否则如果遇到stop world 的情况就得不偿失了。
希望大家指点和交流,谢谢!

相关文章

  • 几句话总结CAS锁与synchronized差异

    其实网上有很多做过实验对比的,这里就不一一叙述了,总的来说就是,竞争少的情况下CAS优于synchronized,...

  • 6、多线程

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

  • Android面试知识点(三)*

    1、java里的锁总结(synchronized隐式锁、Lock显式锁、volatile、CAS)[https:/...

  • 锁的总结

    序号锁名称应用实例1乐观锁CAS2悲观锁synchronized、vector、hashtable3自旋锁CAS4...

  • Java性能 -- CAS乐观锁

    synchronized / Lock / CAS synchronized和Lock实现的同步锁机制,都属于悲观...

  • ReentrantLock vs synchronized比较分

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

  • CAS(自旋锁)

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

  • 知识点欠缺

    java锁的使用,锁类型(CAS)JVM模型GCRoot有哪些volatile和synchronized(锁升级)...

  • Java 并发编程—CAS 机制

    CAS 机制 什么 CAS ? 在 Java 中,锁分为两类,一种是悲观锁 Synchronized ,一种是乐观...

  • Java锁详解

    本篇主要内容如下: 锁名词汇总: 锁名称应用乐观锁CAS悲观锁synchronized、vector、hashta...

网友评论

      本文标题:几句话总结CAS锁与synchronized差异

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