2010-03-15 75 views

回答

4

如果JVM由于某种原因 System.exit()包括O/S关闭而被关闭,那么可以向您的Java程序添加一个关闭钩子。那是你要的吗?

用途:java.lang.Runtime.addShutdownHook(Thread)

Runtime.getRuntime().addShutdownHook(new Thread() { 
    public void run() { 
     // shutdown code here 
     } 
    }); 
+0

IIRC,在Java 6中leats,关闭挂钩仍运行,即使System.exit()的调用 - 他们不是唯一的一次是,如果进程发送kill命令(或OS等价物) – aperkins 2010-03-15 20:38:41

4

关闭挂钩应该做的工作。

API Doc

注册新的虚拟机来关闭钩。

  • 该程序正常退出,当最后一个非守护线程退出时,或者当出口(等同于System.exit)方法被调用,或者: Java虚拟机响应于两种事件关闭
  • 响应用户中断(如键入^ C)或系统范围的事件(如用户注销或系统关闭)而终止虚拟机。
Runtime.getRuntime().addShutdownHook(new Thread() { 
    public void run() { 
    // do something 
    } 
}); 
相关问题