shutdownhook是jvm提供给应用程序在jvm退出时,处理应用程序未处理完的任务的一种安全退出机制,通过这种机制,可以在jvm退出时关闭一些资源,中断一些必须优雅关闭的线程等。
使用方式也很简单,可以在主线程启动的时候使用下面的代码注册,具体如下:
Runtime.getRuntime().addShutdownHook(new CleanWorkThread());
/**
* hook线程
*/
static class CleanWorkThread extends Thread {
@Override
public void run() {
Date now = new Date();
logger.debug(now + " ShutdownHook CleanWorkThread!");
try {
closeUnFinishThread(now);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}