import java.util.concurrent.TimeUnit; public class HookTest { public static void main(String[] args) throws InterruptedException{ Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { System.out.println("Hahaha"); } })); TimeUnit.SECONDS.sleep(10); System.out.println("ending......"); } }
ending......
Hahahajava
JDK提供了Java.Runtime.addShutdownHook(Thread hook)方法,能够注册一个JVM关闭的钩子,这个钩子能够在一下几种场景中被调用:ide
程序正常退出spa
使用System.exit()code
终端使用Ctrl+C触发的中断进程
系统关闭get
OutOfMemory宕机源码
使用Kill pid命令干掉进程(注:在使用kill -9 pid时,是不会被调用的)it