全部博文(17)
2008年(17)
分类: Java
2008-03-13 15:05:16
addShutdownHook()(JDK1.3引入),注册关闭挂钩,在JVM退出时执行。关闭挂钩 只是一个已初始化但尚未启动的线程。虚拟机开始启用其关闭序列时,它会以某种未指定的顺序启动所有已注册的关闭挂钩,并让它们同时运行。运行完所有的挂钩后,如果已启用退出终结,那么虚拟机接着会运行所有未调用的终结方法。最后,虚拟机会暂停。注意,关闭序列期间会继续运行守护线程,如果通过调用exit方法来发起关闭序列,那么也会继续运行非守护线程。
如果不是关闭JVM,而只是关闭线程呢?试了一下也是可以的,其实也是关闭了一个JVM。
注意:底层的操作系统可能只允许在固定的时间内关闭并退出。因此在关闭挂钩中尝试进行任何用户交互或执行长时间的计算都是不明智的。可能存在问题。