1、先写好代码,如下找了个示例代码,文件名是Mutex.java:
package com.huangshiyi.concurrent.cha04;
import java.util.concurrent.TimeUnit;
public class Mutex {
private final static Object MUTEX = new Object();
public void accessResource() {
synchronized (MUTEX) {
try {
TimeUnit.MINUTES.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
final Mutex myMutex = new Mutex();
for (int i = 0; i < 5; i++) {
new Thread(myMutex::accessResource).start();
}
}
}
2、如下图所示在win10下的话,在项目的文件包路径com.huangshiyi.concurrent.cha04所在位置之前打开PowerShell,例如上述Mutex.java在电脑硬盘上的绝对路径是
D:\LearnForWork\JavaHighConcurrencyProgrammingInDetail\src\main\java\com\huangshiyi\concurrent\cha04\Mutex.java
所以在D:\LearnForWork\JavaHighConcurrencyProgrammingInDetail\src\main\java\这个地方打开PowerShell就行。然后编译命令是javac + 相对路径,如下图所示:
image.png
如果运行上图所示命令没有报错的话则表示编译成功,Java编译器很快会在Mutex.java文件同一个目录下生成所编译源文件名.class文件,在本例中即是Mutex.class。
3.对所生成的Mutex.class文件进行反编译,反编译命令是javap -c + 文件相对路径,如下图所示:
image.png
若反编译成功,PowerShell界面应如下所示:
image.png
image.png