概念:钩子函数是在一个事件触发的时候,在系统级捕获到了它,然后做一些操作
Java提供java.lang.Runtime.addShutdownHook(Thread hook)方法
说明:
该方法用来在JVM中增加一个关闭的钩子函数,JVM关闭时执行该线程
作用:
在JVM关闭之前可以执行内存清理,对象销毁,关闭连接,释放资源等操作
注意:
该方法可以在以下几种情况下被调用:
- 程序正常退出
- 使用System.exit()
- 终端使用Ctrl+C触发的中断
- 系统关闭
- OutOfMemory宕机
- 使用Kill pid命令干掉进程(注:在使用kill -9 pid时,是不会被调用的)
代码演示:
public class HookFunctionTest{
public static void main(String[] args){
System.out.println("程序已启动...");
new Thread(()->{
...
}).start();
Runtime.getRuntime().addShutdownHook(()->{
System.out.println("shutdown hook");
});
}
}