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