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实现原理的主要内容,如果未能解决你的问题,请参考以下文章