日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java虚拟机的生命周期_深入理解Java虚拟机——JVM的生命周期

發布時間:2023/12/31 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java虚拟机的生命周期_深入理解Java虚拟机——JVM的生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

package test;

public class JVMTestLife {

public static void main(String[] args) {

new Thread(new Runnable() {

@Override

public void run() {

for(int i=0;i<5;i++){

try {

Thread.currentThread().sleep(i*10000);

System.out.println("睡了"+i*10+"秒");

} catch (InterruptedException e) {

System.out.println("干嘛吵醒我");

}

}

}

}).start();

for(int i=0;i<50;i++){

System.out.print(i);

}

}

}

觀察控制臺輸出和任務管理器的javaw.exe會發現,當main函數的for循環打印完的時候,程序居然沒有退出,而等到整個new Thread()里的匿名類的run方法執行結束后,javaw.exe才退出。

我們知道在c++的win32編程(CreatThread()),main函數執行完了,寄宿線程也跟著退出了,在c#中如果你用線程池(ThreadPool)的話,結論也是如此,線程都跟著宿主進程的結束而結束。但是在java中貌似和我們的認知有很大的出入,這是為什么呢?

這是由于java的虛擬機種有兩種線程,一種叫叫守護線程,一種叫非守護線程,main函數就是個非守護線程,虛擬機的gc就是一個守護線程。java的虛擬機中,只要有任何非守護線程還沒有結束,java虛擬機的實例都不會退出,所以即使main函數這個非守護線程退出,但是由于在main函數中啟動的匿名線程也是非守護線程,它還沒有結束,所以jvm沒辦法退出。

java虛擬機的生命周期,當一個java應用main函數啟動時虛擬機也同時被啟動,而只有當在虛擬機實例中的所有非守護進程都結束時,java虛擬機實例才結束生命。

總結

以上是生活随笔為你收集整理的java虚拟机的生命周期_深入理解Java虚拟机——JVM的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。