了解一下Hook线程

Hook线程也被称为钩子线程,在JVM程序退出的时候,Hook线程能够被启动并且执行。

Hook线程demo示例:

import java.util.concurrent.TimeUnit;

public class HookThread {
    public static void main(String[] args) {
        //钩子线程1
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            try {
                System.out.println("hook1线程正在运行");
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("hook1线程运行结束");
        }));
        //钩子线程2
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            try {
                System.out.println("hook2线程正在运行");
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("hook2线程运行结束");
        }));
        System.out.println("主线程运行结束");
    }
}

运行结果:
了解一下Hook线程_第1张图片

总结

可以发现在主线程运行结束,JVM进程即将退出的时候,注入的两个Hook线程会被启动且执行。

你可能感兴趣的:(Java并发编程)