在虚拟机被关闭前想做一些收尾工作,可以使用
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run() {
log.error("begin to shutdown....");
try {
sleep(1*1000*60);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.error("shutdown completely...");
}
});
注册新的虚拟机来关闭钩子。
Java 虚拟机会为了响应以下两类事件而关闭:
程序正常 退出,这发生在最后的非守护线程退出时,或者在调用
exit
(等同于
System.exit
)方法时。或者,
为响应用户中断而 终止 虚拟机,如键入 ^C;或发生系统事件,比如用户注销或系统关闭。