国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何在程序異常或正常退出JVM時執行特定代碼

2019-11-18 14:47:51
字體:
來源:轉載
供稿:網友

  作者:jackliu
e-mail:suntoday@eyou.com

通常情況下,我們一般調用System.exit()方法來退出JVM,查看System.exit()的設計可以發現這個方法調用了Runtime.getRuntime()的exit()方法,參考Runtime類結構我們可以得到關于系統退出時有關更多的方法。
exit()方法會使java JVM退出,在Jdk1.3中,假如使用addShutdownHook()方法注冊了一個線程,當通過調用exit()或通過用戶中斷(CTRL C)被關閉后,該線程將被激活調用,可以利用這一功能來在系統退出或異常退出捕捉這一時刻,做一些必要的退出操作。
shutdownhook(關機鉤)的主要目的是在系統中斷后進行必要的清除,例如進行網絡關閉、關閉打開的文件等操作,可以通過addShutdownHook()方法注冊了一個這樣的關機鉤,并且答應你注冊多個關機鉤。在JVM退出之前,它會啟動所有已注冊的關機鉤,并讓這些關機鉤線程同步執行。在一個關機鉤執行之前可以使用removeShutdownHook()來刪除一個已注冊的關機鉤,也可以調用halt()不調用關機鉤線程直接退出JVM。

下面是注冊關機鉤的例子,在addShutdownHook方法里構造了一個局部類,這個局部類實現了在系統中斷退出時要執行的一些必要操作。在例子里,同時注冊了兩個關機鉤。





import java.lang.*;

public class TestExit{
public static void main(String[] args){
System.out. //注冊一個關機鉤,當系統被退出或被異常中斷時,啟動這個關機鉤線程
Runtime.getRuntime().addShutdownHook(new Thread(){
public void run(){
//添入你想在退出JVM之前要處理的必要操作代碼
System.out.println("T1");}
});
//注冊第二個關機鉤
Runtime.getRuntime().addShutdownHook(new Thread(){
public void run(){ System.out.println("T2");}
});

System.exit(0);
}


}


當測試這段代碼時,系統可能輸出結果如下:




my java process
T2
T1

原來,這兩個關機鉤線程在程序退出被JVM并行執行,假如你設置了線程優先級,將先執行一個高優先級的鉤子線程,否則將被隨機并行執行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙坪坝区| 永胜县| 东台市| 宁阳县| 堆龙德庆县| 丽水市| 大丰市| 湘潭市| 眉山市| 潞西市| 西昌市| 贵州省| 喀喇| 亳州市| 广丰县| 阿鲁科尔沁旗| 拉萨市| 金平| 隆回县| 江阴市| 伊吾县| 开原市| 高州市| 太白县| 龙胜| 南昌县| 隆林| 安西县| 乌鲁木齐市| 将乐县| 淅川县| 延津县| 曲阳县| 南召县| 蛟河市| 富民县| 黔江区| 咸阳市| 郁南县| 色达县| 仁布县|