JVM結束時執行關閉鉤子

2021-08-16 09:04:58 字數 941 閱讀 6065

jvm正常結束時:

正常結束時,首先呼叫已註冊的關閉鉤子,關閉鉤子是在runtime上註冊的執行緒,在關閉鉤子執行完畢後,jvm呼叫終結器,結束執行。如果關閉鉤子沒有停止執行,jvm不會結束執行。在jvm最終結束執行時,如果此時還有正在執行的應用程式執行緒,那麼這些執行緒會被強行關閉。

jvm強行結束時:

強行結束時,不會執行關閉鉤子。

package cn.t5;

public class t5

}})); }

public static void main(string args) catch (interruptedexception e) }}

}).start();

new t5().start();

try catch (interruptedexception e)

system.exit(0); }

}

輸出:

thread-0::應用程式執行緒在執行

thread-0::應用程式執行緒在執行

thread-0::應用程式執行緒在執行

thread-0::應用程式執行緒在執行

thread-0::應用程式執行緒在執行

thread-1::執行關閉鉤子2681927956839505

應用程式執行緒thread-0啟動後,開始輸出 "應用程式執行緒在執行" ,main執行緒休眠2秒後呼叫 system.exit(0) 正常結束jvm,此時 thread-1執行緒執行關閉鉤子,關閉鉤子執行結束後jvm呼叫終結器,jvm最終結束執行時候thread-0執行緒還在執行,被強行關閉,jvm結束。

如果把關閉鉤子裡

//while(true)

放開,關閉鉤子將無法結束,jvm會一直等待,無法進入最終結束狀態,此時 thread-0::應用程式執行緒在執行 會不停的輸出,因為這個應用程式執行緒不會被停止。

隱私結束時代到來

我有個朋友我沒見過她男朋友,有一次聊天我開玩笑說我知道她老公的 她說她不信,當時我真的是開玩笑,但是讓我沒想到的是我真的知道了,我從她的郵箱找到了她在校內上的註冊,讓後在校內上從她的特別好友裡找到了他男朋友,雖然是設定了隱私沒法檢視,但是名字我是知道了,還有就是知道了她男朋友的qq,就這些,我開始在...

elmentUI 開始結束時間

正常來說開始結束時間,我們在資料庫裡面設計一般為倆個字段,但是在elmentui元件在開始結束至的時候是用乙個字段顯示,那需要怎麼做呢?解決方法如下 預設 但是這樣就結束了嗎?注意這個只是在選擇的時候將值賦值給開始和結束方法,我們插入到資料庫後,需要重新查詢出來,這個時候需要在query後將開始和結...

父執行緒結束時如何自動結束子執行緒

首先要指出這裡的父執行緒不是主線程 這的確是個問題,也就是說怎麼才能保證父執行緒結束後其子執行緒也都退出.有人說在父執行緒結束前結束掉子執行緒不就行了嗎?但事實是,如何父執行緒被暴力時,根本無法正確處理子執行緒.個人認為有兩種方法.一是在父執行緒中得到控制代碼,建立子執行緒時作為引數傳給子執行緒,這...