测试代码:
public class TestHook {
public static boolean hookFlag = false;
public static void main(String[] args) {
Thread shutDownThread = new Thread() {
public void run() {
TestHook.hookFlag = true;
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("hook success!"+TestHook.hookFlag);
}
};
Runtime.getRuntime().addShutdownHook(shutDownThread);
System.out.println("hook init" + TestHook.hookFlag);
while(!TestHook.hookFlag) {
try {
Thread.sleep(1000);
System.out.println("没安全退出");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("安全退出");
}
}
执行命令 kill [pid]
运行结果: