当前位置: 首页 > news >正文

CAS与sychronized优化

文章目录

    • CAS优化
    • sychronized优化

CAS优化

CAS 优化过程:
CAS是一种乐观锁机制,它通过比较内存中的值与预期值是否一致来决定是否更新。如果一致,则更新;如果不一致,则说明有其他线程修改了该值,CAS操作失败,通常需要从新操作。

CAS的优化主要体现在减少了锁的开销,避免了线程阻塞,提高了并发性能。然而,CAS也存在一些问题,例如ABA问题(ABA问题指一个值被修改为另一个值,然后再修改回原来的值,CAS检测不到这种变化)以及循环自旋带来的性能损耗。

为了解决ABA问题,给要修改的数据引入版本号在CAS比较数据当前值和旧值的同时,也要比较版本号是否符合预期,如果发现当前读到的版本号一致,就真正执行修改操作,并让版本号自增;如果当前版本号比之前读到的版本号大,就认为操作失败。

sychronized优化

加锁⼯作过程:JVM 将 synchronized 锁分为 ⽆锁、偏向锁、轻量级锁、重量级锁 状态。会根据情况,进⾏依次升级。
在这里插入图片描述
synchronized 关键字在 JDK 1.6 之后进行了显著的优化,其优化过程主要体现在锁升级机制上,从无锁状态逐步升级到偏向锁、轻量级锁,最后才是重量级锁。

无锁状态: 对象的 Mark Word 中不存储锁信息。

偏向锁: 当一个线程访问同步块并获取锁时,JVM 会在对象头 Mark Word 中存储该线程的 ID,后续该线程再次访问时无需竞争锁。这是一种优化,减少了无竞争情况下的锁开销。 如果其他线程尝试访问,则偏向锁升级为轻量级锁。

轻量级锁: 如果多个线程竞争锁,偏向锁升级为轻量级锁。轻量级锁使用 CAS 操作来尝试获取锁,如果 CAS 成功,则线程获得锁;如果失败,则轻量级锁升级为重量级锁。轻量级锁避免了重量级锁的系统调用开销。

重量级锁: 当轻量级锁竞争激烈时,锁升级为重量级锁,此时会使用操作系统提供的互斥锁来实现同步,性能开销较大。 这通常发生在高并发场景下。

锁消除:
定义:锁消除是指在编译时,JVM分析代码并消除不必要的锁。它的基本思想是,如果在某个代码块中,锁只被一个线程使用,并且没有其他线程访问共享资源,那么这个锁就可以被消除。

工作原理:当JVM编译器分析代码时,如果发现某个对象的锁只在一个线程中被使用,并且没有其他线程访问这个对象,那么它可以安全地消除这个锁。例如,在一个方法中,如果一个局部变量只在该方法内部使用,并且没有被其他线程共享,那么对这个局部变量的synchronized锁就可以被消除。

锁粗化:
定义:锁粗化是指将多个连续的synchronized块合并为一个更大的synchronized块,以减少锁的获取和释放次数。

工作原理:

当JVM发现多个synchronized块是对同一个对象的锁,并且这些块是连续的(即没有其他代码插入),它可以将这些块合并为一个大的synchronized块。
这样做的好处是减少了锁的获取和释放次数,从而降低了上下文切换的开销。

相关文章:

  • 10. 工具(Tools)集成:连接API、数据库与外部服务的桥梁
  • 8.方法引用综合小练习2-获取部分属性并收集到数组
  • 解读typescript中class类
  • Springboot JPA ShardingSphere 根据年分表java详细代码Demo
  • Java Stream API:现代化集合处理的艺术
  • AI比人脑更强,因为被植入思维模型【49】冰山理论思维模型
  • 鱼骨图分析法实战:5步定位系统故障
  • Linux系统学习Day2——在Linux系统中开发OpenCV
  • 【微机及接口技术】- 第九章 串行通信与串行接口(上)
  • 路由表的最终地址 root 路由跟踪,最终到哪里去
  • RK-realtime Linux
  • python(49)-串口接收与发送
  • Android audio(6)-audiopolicyservice介绍
  • C++Cherno 学习笔记day17 [66]-[70] 类型双关、联合体、虚析构函数、类型转换、条件与操作断点
  • 华为OD全流程解析+备考攻略+经验分享
  • VS Code连接服务器编写Python文件
  • 【Docker】Dockerfile 编写实践
  • MYSQL数据库语法补充
  • 区间 DP 详解
  • XMLHttpRequest vs Fetch API:一场跨越时代的“浏览器宫斗剧“
  • 万科再获深铁集团借款,今年已累计获股东借款近120亿元
  • 陕西宁强县委书记李宽任汉中市副市长
  • 广西北部湾国际港务集团副总经理潘料庭接受审查调查
  • 缺字危机:一本书背后有多少“不存在”的汉字?
  • 郑州通报涉“健康证”办理有关问题查处进展情况
  • 加强战略矿产出口全链条管控工作部署会召开