研究synchronized底层实现,涉及到查看java字节码的需要
前提是,你的PC已经成功安装了JDK并别配置了环境变量。
==========查看方法=========
一.javap查看简约字节码方式
1.准备一个java文件
例如,文件所在目录在此处
Student.java文件内容如下:
packagecom.sxd.sweeping.test.synchron;public class Student implementsRunnable{static intage;public static synchronized voidadd(){
age++;
}
@Overridepublic voidrun() {int size = 100000;for (int i = 0; i < size; i++) {
add();
}
}public static voidmain(String[] args) {
Thread thread1= new Thread(newStudent());
Thread thread2= new Thread(newStudent());
thread1.start();
thread2.start();try{
thread1.join();
thread2.join();
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Student.age);
}
}
View Code
2.CMD进入该目录下
3.执行命令查看简约字节码信息
javap -c Student
报错提示:
找不到类
文末查看解决方法
4.查看到的简约字节码信息如下
二.查看java详细字节码信息
1.使用javap -verbose 命令查看详细字节码信息
javap -verbose Student
==========报错解决=========
1.javap查看字节码,提示找不到类
报错提示:
找不到类
解决方法:
先执行一次javac命令,在此处生成class文件后,再执行javap命令即可。
如下:
先执行
javac Student.java
再执行
javap -c Student