1. 程式人生 > >java中addShutdownHook鉤子程式用途

java中addShutdownHook鉤子程式用途

通過我們的程式中執行完之後都會進行一些清理工作,比如關閉資料庫資源,同步等操作。這時我們的鉤子函式addShutdownHook有了用武之地。

1.鉤子程式執行時機:

當程式正常退出,系統呼叫 System.exit方法或虛擬機器被關閉時才會執行新增的shutdownHook執行緒。其中shutdownHook是一個已初始化但並不有啟動的執行緒,當jvm關閉的時候,會執行系統中已經設定的所有通過方法addShutdownHook新增的鉤子,當系統執行完這些鉤子後,jvm才會關閉。所以可通過這些鉤子在jvm關閉的時候進行記憶體清理、資源回收等工作。  
2.用法

Runtime.getRuntime().addShutdownHook(Thread thread)

這裡我們需要將一個執行緒物件傳入,作為鉤子程式的實現程式碼。本質上就是在jvm關閉時,執行一個執行緒。

3.實戰

public class Client{
public void test1(){
    System.out.println("startting working......");
    Runtime.getRuntime().addShutdownHook(new Thread(){
        @Override
        public void run() {
            System.out.println("執行鉤子執行緒");
        }
    });
    System.out.println("program endding");
}
}
執行結果:
startting working......
program endding

--------------------- 
原文:https://blog.csdn.net/xqhadoop/article/details/62237437