美文网首页
Java的ShutdownHook

Java的ShutdownHook

作者: 野猪先生XYJ | 来源:发表于2020-10-20 17:27 被阅读0次

JDK提供了Java.Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在一下几种场景中被调用:

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

这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁、关闭连接等操作。

public static void main(String[] args) {
        //Shutdown hook demo
        Thread thread1 = new Thread() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                System.out.println("thread1...");
            }
        };
        System.out.println("main开始");
        try {
            thread1.start();
            thread1.join();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        System.out.println("main即将结束");
        //定义shutdownhook
        Thread shutdownThread = new Thread() {
            @Override
            public void run() {
                System.out.println("Shutdown hook");
            }
        };
        Runtime.getRuntime().addShutdownHook(shutdownThread); //注册钩子
        System.out.println("main结束");
    }

输出结果

main开始
thread1...
main即将结束
main结束
Shutdown hook

相关文章

网友评论

      本文标题:Java的ShutdownHook

      本文链接:https://www.haomeiwen.com/subject/qpwdmktx.html