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