java程序部署在服务器上时,Ctrl+C关闭,或者service Servicename stop关闭时(不包括 kill -9 操作),会有一些关闭资源等操作来不及执行。
这时为了程序安全退出,我们可以使用Shutdown Hook来实现。
使用方法:
比如,添加一个方法
public void start() {
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run()
{
for(String ip:channelMap.keySet()) {
clear(ip);
}
logger.error("unsafe shutdown,Execute Hook.....");
}
}));
}
程序启动时就调用这个start(),当程序要关闭时就会执行这里定义的线程,把要执行的操作加到这个线程的run方法里即可。