2010-03-15 59 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 
    } 
}); 
相關問題