美文网首页
3.3 锁粗化

3.3 锁粗化

作者: lsh的学习笔记 | 来源:发表于2020-04-13 15:32 被阅读0次

原则上,我们在编写代码的时候,总是推荐将同步块作用范围限制得尽量小——只在共享数据的实际作用域中才进行同步,这样是为了使得需要同步的操作数量尽可能变小,如果存在锁竞争,那等待锁的线程也能尽快拿到锁。

大部分情况下,上面的原则都是正确的,但是如果一系列的连续操作都对同一个对象反复加锁和解锁,甚至加锁操作是出现在循环体中的,那即使没有线程竞争,频繁地进行互斥同步操作也会导致不必要的性能损耗。

如果虚拟机探测到有这样一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(粗化)到整个操作序列的外部,扩展到第一个操作之直至最后一个操作之,这样只需要加锁一次就可以了。

相关文章

  • 3.3 锁粗化

    原则上,我们在编写代码的时候,总是推荐将同步块的作用范围限制得尽量小——只在共享数据的实际作用域中才进行同步,这样...

  • Java 锁粗化与循环

    Java的锁粗化与循环。 1. 问题 Hotspot 确实进行了锁粗化优化,可以有效合并几个相邻同步块,从而降...

  • 锁优化(2)--- 锁粗化

    原则上,我们在编写同步块的时候,同步块的范围应当尽量小——只在共享数据的实际作用域中才进行同步,这样是为了使得需要...

  • 锁消除 与 锁粗化

    锁消除 如上图示例, object在方法外部, 此为正常的同步方法. 若将Object object =new O...

  • 什么是锁粗化?

    在遇到一连串地对同一锁不断进行请求和释放的操作时,把所有的锁操作整合成√锁的一次请求,从而减少对锁的请求同步次数,...

  • 关于synchronized的锁升级自旋问题

    1.6之后对synchronized做了优化,包括锁消除、锁粗化、自旋和锁升级的过程:偏向锁、轻量级锁、重量级锁。...

  • synchronized

    synchronized synchroized 是一个重量级锁,但是现在经过优化后,引入了自旋锁、锁消除、锁粗化...

  • JVM锁消除和锁粗化

    锁消除和锁粗化都是jvm对于锁的优化措施 锁消除 锁消除就是字面意思,虚拟机会根据自己的代码检测结果取消一些加锁逻...

  • Java锁粗化和锁消除

    锁粗化 通常情况下,为了保证多线程间的有效并发,会要求每个线程持有锁的时间尽可能短,但是大某些情况下,一个程序对同...

  • JAVA常用的锁机制

    Synchronized 实现依赖JVM,随着jdk版本升级从1.5的重量级锁,1.6的适应自旋、锁消除、锁粗化、...

网友评论

      本文标题:3.3 锁粗化

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