概念:钩子函数是在一个事件触发的时候,在系统级捕获到了它,然后做一些操作
    Java提供java.lang.Runtime.addShutdownHook(Thread hook)方法
    说明:
    该方法用来在JVM中增加一个关闭的钩子函数,JVM关闭时执行该线程
    作用:
    在JVM关闭之前可以执行内存清理对象销毁关闭连接释放资源等操作
    注意:
    该方法可以在以下几种情况下被调用:

    1. 程序正常退出
    2. 使用System.exit()
    3. 终端使用Ctrl+C触发的中断
    4. 系统关闭
    5. OutOfMemory宕机
    6. 使用Kill pid命令干掉进程(注:在使用kill -9 pid时,是不会被调用的)

    代码演示:

    1. public class HookFunctionTest{
    2. public static void main(String[] args){
    3. System.out.println("程序已启动...");
    4. new Thread(()->{
    5. ...
    6. }).start();
    7. Runtime.getRuntime().addShutdownHook(()->{
    8. System.out.println("shutdown hook");
    9. });
    10. }
    11. }