当前位置: 首页> 健康> 养生 > 广州互联网项目工作室_网站制作都有哪些_排名前50名免费的网站_网络营销到底是个啥

广州互联网项目工作室_网站制作都有哪些_排名前50名免费的网站_网络营销到底是个啥

时间:2025/7/13 0:11:11来源:https://blog.csdn.net/2401_85487314/article/details/147055487 浏览次数:0次
广州互联网项目工作室_网站制作都有哪些_排名前50名免费的网站_网络营销到底是个啥

文章目录

    • 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块。
这样做的好处是减少了锁的获取和释放次数,从而降低了上下文切换的开销。

关键字:广州互联网项目工作室_网站制作都有哪些_排名前50名免费的网站_网络营销到底是个啥

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: