Synchronized实现原理

Posted ssskkk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Synchronized实现原理相关的知识,希望对你有一定的参考价值。

1.字节码层面

先在Idea下载一个ByteCode插件来观察java字节码

public class TestSync {
    synchronized void m() {

    }

    void n() {
        synchronized (this) {//monitorenter 

        } //monitorexit
    }

    public static void main(String[] args) {

    }
}

然后idea—view—showByteCode

这是我们n方法的字节码 为synchronized关键字加了monitorenter monitorexit指令

技术图片

2.JVM层面

C C++调用了操作系统提供的同步机制

3.OS和硬件层面

X86 : lock cmpxchg / xxx  (lock后面的指令执行的过程中 区域被lock锁定,只有我这个指令能执行)

https://blog.csdn.net/21aspnet/article/details/88571740

以上是关于Synchronized实现原理的主要内容,如果未能解决你的问题,请参考以下文章

多线程之synchronized实现原理

synchronized的底层实现原理

JAVA并发编程:synchronized及其实现原理

synchronized实现原理

深入分析synchronized的实现原理

synchronized实现原理