javalangRuntim类提供了addShutdownHook(Thread hook)方法用来添加虚拟机关闭的钩子
用途
1应用程序正常退出在退出时执行特定的业务逻辑
2虚拟机非正常退出比如用户按下ctrl+c操作系统关闭等在退出时执行必要的挽救措施
实例
public class TestOnExit {
public TestOnExit(){
doShutDownWork();
}
private void doShutDownWork(){
RuntimegetRuntime()addShutdownHook(new Thread(){
public void run(){
Systemoutprintln(application will exit );
}
});
}
public static void main(String[] args) {
TestOnExit exit=new TestOnExit();
long beginTime=SystemcurrentTimeMillis();
for(int i=;i<;i++){
try {
Systemoutprintln(application run the +i+ci);
Threadsleep();
} catch (InterruptedException e) {
eprintStackTrace();
}
}
long endTime=SystemcurrentTimeMillis();
Systemoutprintln(it speat time is +(endTimebeginTime));
}
}
可以做个测试首先正常运行
执行ctrl+c
然后再试试kill
但是遇到kill 命令就不行了所以这个东西还是不很稳定可用性不高!
kill 命令直接就把窗口关掉了很暴力
我又试了下kill 这个发现是可以的截个图上来
然后看运行的结果
是执行了钩子函数的