Runtime.addShutdownHook理解

一.Runtime.addShutdownHook理解 java

在看別人的代碼時,發現其中有這個方法,便順便梳理一下。 jvm

void java.lang.Runtime.addShutdownHook(Thread hook) spa

該方法用來在jvm中增長一個關閉的鉤子。當程序正常退出,系統調用 System.exit方法或虛擬機被關閉時纔會執行添加的shutdownHook線程。其中shutdownHook是一個已初始化但並不有啓動的線 程,當jvm關閉的時候,會執行系統中已經設置的全部經過方法addShutdownHook添加的鉤子,當系統執行完這些鉤子後,jvm纔會關閉。因此 可經過這些鉤子在jvm關閉的時候進行內存清理、資源回收等工做。   線程

 

二.示例代碼 內存

 

Java代碼   收藏代碼
  1. public class TestRuntimeShutdownHook {  
  2.     public static void main(String[] args) {  
  3.   
  4.         Thread shutdownHookOne = new Thread() {  
  5.             public void run() {  
  6.                 System.out.println("shutdownHook one...");  
  7.             }  
  8.         };  
  9.         Runtime.getRuntime().addShutdownHook(shutdownHookOne);  
  10.   
  11.         Runnable threadOne = new Runnable() {  
  12.             public void run() {  
  13.                 try {  
  14.                     Thread.sleep(1000);  
  15.                 } catch (InterruptedException e) {  
  16.                     e.printStackTrace();  
  17.                 }  
  18.                 System.out.println("thread one doing something...");  
  19.             }  
  20.         };  
  21.   
  22.         Runnable threadTwo = new Thread() {  
  23.             public void run() {  
  24.                 try {  
  25.                     Thread.sleep(2000);  
  26.                 } catch (InterruptedException e) {  
  27.                     e.printStackTrace();  
  28.                 }  
  29.                 System.out.println("thread two doing something...");  
  30.             }  
  31.         };  
  32.   
  33.         threadOne.run();  
  34.         threadTwo.run();  
  35.     }  
  36. }  
  

輸出以下: 資源

 

Java代碼   收藏代碼
  1. thread one doing something...  
  2. thread two doing something...  
  3.   
  4. shutdownHook one... 
相關文章
相關標籤/搜索