Java中的一種特殊構造,允許開發人員製作一段程式碼的插件,該程式碼將在java虛擬機關閉期間執行,當我們必須在關閉期間執行清理操作時,這是非常必要的java虛擬機的down以及由於作業系統殺死請求或資源問題等原因而導致的虛擬機器關閉,不能用通用的構造來解決,而是可以使用shutdown提供的任意程式碼區塊來解決hook,它是java.lang.Thread類別的擴展,在java 虛擬機器關閉期間,在public void run() 方法內提供了必要的邏輯。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
代碼:
//a class called mythr is defined and it extends a thread class MyThr extends Thread { public void run() { System.out.println("The task of shut down hook is completed"); } } <em>//a class called shutdown is defined</em> public class Shutdown { <em>//main method is called</em> public static void main(String[] args)throws Exception { <em>//an instance of java runtime class is created</em> Runtime roll=Runtime.getRuntime(); <em>//shutdown hook method is called using the instance of runtime class and the instance of mythr class is created</em> roll.addShutdownHook(new MyThr()); System.out.println("The main starts to sleep. Press control and c to exit"); try { Thread.sleep(3000); } catch (Exception e) { } } }
上述程式的輸出如下圖:
在上面的程式中,定義了一個名為 mthr 的類,它擴充了一個執行緒。然後定義了一個名為shutdown的類別。然後呼叫main方法。然後建立一個java運行時類別的實例。然後使用運行時類別的實例呼叫 shutdown hook 方法,並建立 myhr 類別的實例。 shutdown 鉤子方法會導致 shutdown 類別中的 print 語句被印出來,然後是 myhr 類別的 run 方法中的語句。程式的輸出如上面的快照所示。
以下是下面提到的範例:
Java程式示範在程式中使用shutdown hook:
代碼:
//a class called shutdown is defined public class ShutDown { //main method is called public static void main(String[] args) { //an instance of java runtime class is created and a new thread constructor is passed as a parameter to shutdown hook method Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { System.out.println("the shut down hook is in progress !"); } }); System.out.println("Termination of application ..."); } }
上述程式的輸出如下圖:
在上面的程式中,定義了一個呼叫關閉的類別。然後呼叫main方法。然後建立一個 java 運行時類別的實例,並將一個新的執行緒建構函式作為參數傳遞給 shutdown hook 方法。程式的輸出如上面的快照所示。
Java程式示範在程式中使用shutdown hook:
代碼:
//a class called demo is defined public class Demo { // a class called mess is defined and it extends a thread and this function is called when the program is exiting static class Mess extends Thread { public void run() { System.out.println("Good Bye."); } } //main method is called public static void main(String[] args) { try { //shutdown hook method is called to which the instance of the class mess is passed as a parameter Runtime.getRuntime().addShutdownHook(new Mess()); // the beginning of the program is printed System.out.println("Beginning of the program..."); // the wait time for the thread is printed System.out.println("The wait time for the thread is three seconds..."); Thread.sleep(3000); //Ending of the program is printed System.out.println("Ending of the program..."); } catch (Exception e) { e.printStackTrace(); } } }
上述程式的輸出如下圖:
在上面的程式中,定義了一個mess類,它擴展了一個線程,並在程式退出時呼叫該函數。然後呼叫main方法。然後呼叫 shutdown 鉤子方法,將混亂類別的實例作為參數傳遞給該方法。然後列印程式的開頭。然後列印線程的等待時間。然後列印程式的結束訊息。程式的輸出如上面的快照所示。
Java shutdown hook 有幾個優點。他們是:
在本教程中,我們透過定義了解 Java 中關閉鉤子的概念,透過範例及其輸出了解 Java 中關閉鉤子的工作原理。
以上是Java 關閉掛鉤的詳細內容。更多資訊請關注PHP中文網其他相關文章!