对于Java同步处理可以参考这篇博客:https://blog.csdn.net/sophia__yu/article/details/83990755
但是这些处理方法的底层实现是怎样呢?
接下里将会解释同步代码块、同步方法、全局锁的底层实现。
同步代码块底层实现:
首先看一个简单的同步代码块:
/同步代码块底层实现
public class DiCeng {
public static void main(String[] args)
{
Object obj=new Object();
synchronized (obj) //把obj对象锁住
{
System.out.println("hello sun");
}
}
}
先将Java程序编译:javac -encoding UTF-8 DiCeng.java ;
然后进行反编译:javap -c DiCeng ;
下面代码是反编译后底层代码:
public static void main(java.lang.String[]);
Code:
0: new #2 // class java/lang/Object
3: dup
4: invokespecial #1 // Method java/lang/Object."<init>":()V
7: astore_1
8: aload_1
9: dup
10: astore_2
11: monitorenter 注意:monitorenter进入同步代码块
12: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;
15: ldc #4 // String hello sun
17: