Java的ShutdownHook

2020-10-20  本文已影响0人  野猪先生XYJ

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

这个方法的意思就是在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
上一篇下一篇

猜你喜欢

热点阅读