java并发编程synchronized底层实现原理

 更新时间:2022年02月08日 14:52:39   作者:负债程序猿  
这篇文章主要介绍了java并发编程synchronized底层实现原理

首先那些说看过synchronized源码的基本都是大聪明,synchronized根本点不进去,想弄懂它的实现原理,我们只能通过看编译好的字节码文件

整个测试类

public class SynchronizedTest {
    public void get() {
        synchronized (this) {
            System.out.println("小张你好鸭!");
        }
    }
}

字节码文件(怎么看?? idea => view => Show ByteCode)

在这里插入图片描述

再来说原理

基于对象的监视器(ObjectMonitor),我们在字节码文件里面可以看到,在同步方法执行前后,有两个指令,进入同步方法前monitorenter,方法执行完成后monitorexit;

我的理解是对象都有一个监视器ObjectMonitor,这个监视器内部有很多属性,比如当前等待线程数、计数器、当前所属线程等;其中计数器属性就是用来记录是否已被线程占有,方法执行到monitorenter时,计数器+1,执行到monitorexit时,计数器-1,线程就是通过这个计数器来判断当前锁对象是否已被占用(0为未占用,此时可以获取锁);

补充:一个synchronize锁会有两个monitorexit,这是保证synchronize能一定释放锁的机制,一个是方法正常执行完释放,一个是执行过程发生异常时虚拟机释放;

以上就是java并发编程synchronized底层实现原理的详细内容,更多关于synchronized底层原理的资料请关注脚本之家其它相关文章!

相关文章

  • java中关于return返回值的用法详解

    java中关于return返回值的用法详解

    在本篇文章里小编给大家整理的是一篇关于java中关于return返回值的用法详解内容,有兴趣的朋友们可以学习参考下。
    2020-12-12
  • java裁剪图片并保存的示例分享

    java裁剪图片并保存的示例分享

    在这篇文章中我们将学习如何用Java 对图像进行剪裁并将剪裁出来的部分单独保存到文件中
    2014-01-01
  • 深入理解spring的AOP机制原理

    深入理解spring的AOP机制原理

    本篇文章主要介绍了深入理解spring的AOP机制原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Netty分布式解码器读取数据不完整的逻辑剖析

    Netty分布式解码器读取数据不完整的逻辑剖析

    这篇文章主要为大家介绍了Netty分布式解码器读取数据不完整的逻辑剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java注册邮箱激活验证实现代码

    Java注册邮箱激活验证实现代码

    这篇文章主要介绍了Java注册邮箱激活验证实现代码,有需要的朋友可以参考一下
    2013-12-12
  • Java中线程安全有哪些实现思路

    Java中线程安全有哪些实现思路

    在 Java 多线程编程中,线程安全是一个非常重要的概念,本文主要介绍了Java中线程安全有哪些实现思路,非常具有实用价值,需要的朋友可以参考下
    2023-05-05
  • 如何在SpringBoot中使用Spring-AOP实现接口鉴权

    如何在SpringBoot中使用Spring-AOP实现接口鉴权

    这篇文章主要介绍了如何在SpringBoot中使用Spring-AOP实现接口鉴权,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-09-09
  • Java中的注解和反射实例详解

    Java中的注解和反射实例详解

    这篇文章主要给大家介绍了关于Java中注解和反射的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java8中Stream的使用方式

    Java8中Stream的使用方式

    这篇文章主要介绍了Java8中Stream的使用方式,文章通过Stream的创建展开详细的介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • 使用Spring Boot的LoggersEndpoint管理日志级别

    使用Spring Boot的LoggersEndpoint管理日志级别

    这篇文章主要为大家介绍了使用Spring Boot的LoggersEndpoint管理日志级别,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论