眾所周知,用文本編輯器打開.class文件會亂碼。我們可以使用命令行打開.class文件
項目結構:
代碼:
public class Synchronized { public static void main(String[] args) { // 對Synchronized Class對象進行加鎖 synchronized (Synchronized.class) { } // 靜態同步方法,對Synchronized Class對象進行加鎖 m(); } public static synchronized void m() { } }
cmd到~\ThreadTest\bin\testnew,即cmd到.class文件的同級目錄下(.class文件在項目路徑下的bin文件夾下),執行:javap -v Synchronized.class
可以看到Synchronized.class文件內容如下:
public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=1, args_size=1 0: ldc #1 // class testnew/Synchronized 2: dup 3: monitorenter 4: monitorexit 5: invokestatic #16 // Method m:()V 8: return LineNumberTable: line 6: 0 line 10: 5 line 11: 8 LocalVariableTable: Start Length Slot Name Signature 0 9 0 args [Ljava/lang/String; public static synchronized void m(); descriptor: ()V flags: ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED Code: stack=0, locals=0, args_size=0 0: return LineNumberTable: line 14: 0 LocalVariableTable: Start Length Slot Name Signature