jvm最大線程數(shù) Java用戶線程和守護線程有什么區(qū)別?
Java用戶線程和守護線程有什么區(qū)別?Java中有兩種類型的線程:用戶線程和守護進程線程。守護進程的功能是為其他線程的操作提供方便的服務(wù)。例如,垃圾收集線程是一個稱職的守護者。用戶和守護進程之間幾乎沒
Java用戶線程和守護線程有什么區(qū)別?
Java中有兩種類型的線程:用戶線程和守護進程線程。守護進程的功能是為其他線程的操作提供方便的服務(wù)。例如,垃圾收集線程是一個稱職的守護者。用戶和守護進程之間幾乎沒有區(qū)別。唯一的區(qū)別在于虛擬機的離開:如果所有用戶線程都已退出,并且只有守護進程線程存在,那么虛擬機將退出。因為沒有守護程序,所以守護程序沒有工作,也不需要繼續(xù)運行程序。值得一提的是,保護線程不僅在虛擬機內(nèi)部提供,用戶在編寫程序時還可以自行設(shè)置保護線程。
jvm什么時候退出?
1. 人工呼叫系統(tǒng)出口2當主螺紋完成,只剩下保護螺紋時。JVM退出。
main線程結(jié)束,子線程為什么沒有退出?
如果程序中有守護程序和非守護程序,則JVM虛擬機會將在所有非守護程序中結(jié)束它將自動結(jié)束,并且虛擬機將退出。finally塊能否被執(zhí)行取決于運氣
程序中的非保護線程是主線程。主線程啟動守護線程,然后退出
最后,取決于是否有足夠的CPU時間打印t
運行時Java虛擬機實例的職責是運行Java程序。
1.1. JVM實例的誕生
當一個程序啟動時,一個JVM實例誕生。當程序關(guān)閉并退出時,JVM實例將死亡。如果多個程序在同一臺機器上運行,將生成相應(yīng)數(shù)量的JVM實例,并且每個程序都有一個相應(yīng)的JVM實例來運行。任何具有public、static、void函數(shù)并接受字符串數(shù)組參數(shù)(string[]args)的類都可以用作JVM實例的起點。
1.2. JVM實例的運行
main()是程序初始線程的起點,其他線程都由該線程啟動。JVM中有兩種線程:保護線程和非保護線程。Main()是一個非保護線程,通常由JVM本身使用。Java程序還可以指示它們創(chuàng)建的線程是保護線程。java程序的初始線程就是運行main()的線程,這是一個非保護線程。只要任何非保護線程仍在運行,JVM就會繼續(xù)存在。
1.3. JVM實例死亡
當程序中所有非守護進程終止時,JVM退出。如果安全管理器允許,程序也可以使用它java.lang.Runtime運行時類或java.lang.System系統(tǒng). exit()退出。