当前位置: 首页> 娱乐> 八卦 > 广州网络优化最早的公司_登封搜索引擎优化_建个人网站的详细步骤_一个关键词要刷多久

广州网络优化最早的公司_登封搜索引擎优化_建个人网站的详细步骤_一个关键词要刷多久

时间:2025/7/18 10:18:23来源:https://blog.csdn.net/weixin_44038236/article/details/142371048 浏览次数:0次
广州网络优化最早的公司_登封搜索引擎优化_建个人网站的详细步骤_一个关键词要刷多久
  • synchronized是JVM的语法糖,主要是通过JVM来控制的。其实现原理依赖于JVM的监视器和对象头。
    • synchronized修饰方法时,JVM会通过编译完的字节码的访问标记来区分该方法是否被synchronized修饰,在进入方法的时候就会进行获得锁的竞争,获得锁后才能执行方法体
    • synchronized在修饰代码块时,编译后的字节码就会在代码块的前后加上monitorenter和monitorexit标记,一样在进入代码块之前,要先获得锁
    • 对象头信息里有一个markword,是实现synchronized的关键,会根据锁的不同状态保存不同的信息。
      • 无锁:保存hashcode
      • 偏向锁:保存线程ID和偏向标记
      • 轻量级锁:保存指向栈中锁记录的指针
      • 重量级锁,报错指向monitor的指针
      • 48950b730a274d55b6828cbab7addcad.png
  • 加锁流程:
    • 服务起来之后,4s以内只能获得无锁,超过4s才能获得匿名偏向锁(markword中未指定线程id)
      • 为什么要延迟4s?
        • 因为jvm内部代码也用到了很多synchronized,如果启动直接开启偏向锁,如果产生竞争,就会导致锁的升级到轻量级锁,锁的升级会带来额外的性能的消耗
    • 偏向锁解锁完成后,对象头中的线程id不会清0,如果当前线程在进行加锁就不用赋值线程id了
    • 如果偏向锁解锁后,另外一个线程对同一个资源(object)加锁,就会升级成轻量级锁
    • 轻量级锁解锁后就会变成无锁对象(注意这里不会回到偏向锁(一次性的))
    • 无锁对象再加锁,就会变成轻量级锁
    • 初始化成可偏向状态后,该对象调用hashCode()后,会变成无锁对象
    • 偏向锁持有锁的条件下,该锁对象调用hashCode()后,会变成重量级锁

98d1228c02ba41bb9ef165d99b55f385.png

 

关键字:广州网络优化最早的公司_登封搜索引擎优化_建个人网站的详细步骤_一个关键词要刷多久

版权声明:

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

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

责任编辑: