概念:钩子函数是在一个事件触发的时候,在系统级捕获到了它,然后做一些操作
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");});}}
