美文网首页
锁优化(2)--- 锁粗化

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

作者: Bre_eze | 来源:发表于2018-06-22 09:15 被阅读0次

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

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

    public String cancatString(String s1, String s2, String s3){
        StringBuffer sb = new StringBuffer();
        sb.append(s1);
        sb.append(s2);
        sb.append(s3);
        return sb.toString();
    }

上面代码中,连续的append方法就属于这种情况。这时虚拟机就会把锁同步的范围扩展(粗化)到整个操作序列的外部,即第一个append()操作之前直至最后一个append()操作之后,这样只需要加锁一次就可以了。

相关文章

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

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

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

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

  • java面试题 --- 并发②

    1. JDK1.6 开始对 synchronized 做了哪些优化?使用了锁升级、锁粗化、锁消除等方式来优化性能。...

  • synchronized

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

  • JVM中的锁优化

    锁优化 Jvm 在加锁的过程中,会采用自旋、自适应、锁消除、锁粗化等优化手段来提升代码执行效率。 什么是锁升级,降...

  • Java 锁粗化与循环

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

  • 锁优化

    概述 本文主要论述jvm的各种锁优化技术,主要分为适应性自旋、锁消除、锁粗化、轻量级锁和偏向锁。这些技术都是为了在...

  • JVM锁消除和锁粗化

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

  • JDK的锁优化

    JDK1.6重点提升了并发性能,HotSpot开发团队实现了各种锁优化技术,如适应性自旋锁、锁消除、锁粗化、轻量级...

  • 锁消除 与 锁粗化

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

网友评论

      本文标题:锁优化(2)--- 锁粗化

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