一個運(yùn)行時的java虛擬機(jī)實(shí)例的天職就是:負(fù)責(zé)運(yùn)行一個java程序。
*當(dāng)啟動一個java程序時,一個虛擬機(jī)實(shí)例也就誕生了。
*當(dāng)該程序關(guān)閉退出,這個虛擬機(jī)實(shí)例也就隨之消亡。
如果在同一臺計算機(jī)上同時運(yùn)行三個java程序,將得到三個java虛擬機(jī)實(shí)例。每個java程序都運(yùn)行在他自己的java虛擬機(jī)實(shí)例中。
java虛擬機(jī)實(shí)例通過調(diào)用某個初始化類的main() 方法來運(yùn)行一個java程序。這個main()方法必須是公有的(public)、靜態(tài)的(static),返回值為void ,并且接受一個字符串?dāng)?shù)組作為參數(shù)。
任何擁有這樣一個main()方法的類都可以作為java程序運(yùn)行的起點(diǎn)。
java程序初始化類中的mian() 方法,將作為該程序初始線程的起點(diǎn),任何其他的線程都是由這個初始線程啟動的。
java虛擬機(jī)內(nèi)部有兩個線程:守護(hù)線程和非守護(hù)線程。
*守護(hù)線程通常是由虛擬機(jī)自己使用的,比如執(zhí)行垃圾收集任務(wù)的線程。(守護(hù)線程是一種“在后臺提供通用性支持“的線程)
*java程序中的初始線程----就是開始于main() 的那個,是非守護(hù)線程。
只要還有任何非守護(hù)線程在運(yùn)行,那么這個java程序也在繼續(xù)運(yùn)行(虛擬機(jī)仍然存活)當(dāng)該程序中所有的非守護(hù)線程都中止時,虛擬機(jī)實(shí)例將自動自動退出。假若安全管理器允許,程序本身也能夠通過調(diào)用Runtime類或者System類的exit()方法退出。
*當(dāng)啟動一個java程序時,一個虛擬機(jī)實(shí)例也就誕生了。
*當(dāng)該程序關(guān)閉退出,這個虛擬機(jī)實(shí)例也就隨之消亡。
如果在同一臺計算機(jī)上同時運(yùn)行三個java程序,將得到三個java虛擬機(jī)實(shí)例。每個java程序都運(yùn)行在他自己的java虛擬機(jī)實(shí)例中。
java虛擬機(jī)實(shí)例通過調(diào)用某個初始化類的main() 方法來運(yùn)行一個java程序。這個main()方法必須是公有的(public)、靜態(tài)的(static),返回值為void ,并且接受一個字符串?dāng)?shù)組作為參數(shù)。
任何擁有這樣一個main()方法的類都可以作為java程序運(yùn)行的起點(diǎn)。
java程序初始化類中的mian() 方法,將作為該程序初始線程的起點(diǎn),任何其他的線程都是由這個初始線程啟動的。
java虛擬機(jī)內(nèi)部有兩個線程:守護(hù)線程和非守護(hù)線程。
*守護(hù)線程通常是由虛擬機(jī)自己使用的,比如執(zhí)行垃圾收集任務(wù)的線程。(守護(hù)線程是一種“在后臺提供通用性支持“的線程)
*java程序中的初始線程----就是開始于main() 的那個,是非守護(hù)線程。
只要還有任何非守護(hù)線程在運(yùn)行,那么這個java程序也在繼續(xù)運(yùn)行(虛擬機(jī)仍然存活)當(dāng)該程序中所有的非守護(hù)線程都中止時,虛擬機(jī)實(shí)例將自動自動退出。假若安全管理器允許,程序本身也能夠通過調(diào)用Runtime類或者System類的exit()方法退出。