最近在跟着一个大神专栏在学习手敲spring,看到这个Runtime.getRuntime().addShutdownHook
以前还真不知道,记录下来。
百度知识点原文:https://www.cnblogs.com/shihaiming/p/11398371.html
钩子函数:Runtime.getRuntime().addShutdownHook,
作用:当我们程序在运行完之后,如果需要做清理内存,清理线程,或者做业务上的清理工作的话,就可以用这个钩子函数。
执行时间:jvm关闭前
其中shutdownHook是一个已初始化但并不有启动的线程,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以可通过这些钩子在jvm关闭的时候进行内存清理、资源回收等工作。
public static void main(String[] args) {
System.out.println("程序开始执行");
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("执行钩子函数,在程序执行完成,jvm关闭前执行");
}
});
System.out.println("程序执行完成");
}
可以看到,是在最后执行的