介绍
从函数的字面意思上我们很很好理解就是JVM在关闭的时候会逐渐关闭钩子里面添加的函数,见详细例子:‘
例子
public class Test {
static class ThreadOne extends Thread {
public void run() {
int i = 0;
while (i < 3) {
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
}
System.out.println("=====Thread 1=====");
i++;
}
}
}
static class ThreadTwo extends Thread {
public void run() {
int i = 0;
while (i < 3) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
System.out.println("======Thread 2=====");
i++;
}
}
}
static class ThreadThree extends Thread {
public void run() {
System.out.println("#####Thread 3#####");
}
}
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new ThreadThree());
ThreadOne t1 = new ThreadOne();
t1.start();
ThreadTwo t2 = new ThreadTwo();
t2.start();
}
}
结果
======Thread 2=====
======Thread 2=====
=====Thread 1=====
======Thread 2=====
=====Thread 1=====
=====Thread 1=====
#####Thread 3#####
======Thread 2=====
=====Thread 1=====
======Thread 2=====
=====Thread 1=====
=====Thread 1=====
#####Thread 3#####
本文通过一个具体的Java程序示例介绍了如何使用JVM的关闭钩子功能。该示例展示了当JVM正常关闭时如何确保特定线程运行完成,并输出了线程执行和关闭钩子触发的顺序。
188

被折叠的 条评论
为什么被折叠?



