java.lang.Runtime.addShutdownHook(Thread hook) 方法注册一个新的虚拟机关闭挂钩。 Java虚拟机的关机响应于两种类型的事件:java
一般状况下,程序退出时的最后一个非守护线程退出时或退出(等价地,System.exit)方法被调用,或安全
虚拟机终止在响应于一个用户中断,如打字^ C,或一个全系统的事件,如用户注销或系统关闭.spa
关闭钩子是一个简单的初始化但还没有启动的线程。当虚拟机开始关机顺序,将一些未指定的顺序启动全部已注册的关闭钩子,让它们同时运行。当全部的钩子已经完成,它会而后运行全部uninvoked的终结,若是最终肯定的出口已启用。最后,虚拟机将暂停。须要注意的是守护线程将继续运行在关机过程当中,做为非守护线程,若是关机是经过调用exit方法.线程
如下是声明java.lang.Runtime.addShutdownHook()方法对象
public void addShutdownHook(Thread hook)
hook -- 一个初始化但还没有启动的线程对象事件
此方法不返回一个值。虚拟机
IllegalArgumentException -- 若是指定的钩已被注册,或若是它能够断定钩已经运行或已被运行it
IllegalStateException -- 若是虚拟机已是在关闭的过程当中io
SecurityException -- 若是存在安全管理器而且它拒绝的RuntimePermission(“shutdownHooks”)钩子