2011-09-19 54 views

回答

6

如果JVM由於崩潰而退出,線程將不再存在。如果崩潰是某種內存不足或類似錯誤,則根據具體情況它可能存在也可能不存在。

6

如果一個線程正在運行,JVM沒有崩潰。

但是,有時候人們錯誤地描述了任何拋出異常的情況。如果這是面試官的意思,我會說線程仍在運行,因爲異常被捕獲並且沒有被重新拋出。

4

如果包含JVM的進程已關閉,則其所有線程也會關閉。當OS清理分配給給定進程的所有內存時,這將在操作系統級別處理。我提到進程級別的閉包,以區別JVM可能發生的其他奇怪的,未知的狀態,讓它運行,但處於未知狀態(例如,它可能實際上並沒有做任何事情)。

同樣,如果殺死進程,所有子線程都會關閉,無論它們的類型如何(守護進程/非守護進程)。

3

想象一下,你是JVM。你走出去的路上,並沒有真正看到你要去哪裏,你有一個致命的事故。在不幸發生之前的一瞬間,你腦海中有30件事。想象一下,你腦海裏的那些東西是「線索」

當你在路上被衝上岸時,你是否認爲你仍然會意識到並將所有這些東西放在心上?

0

JVM的執行實例是一個進程。

線程是進程的一部分。

如果這個過程已經結束,那麼它的一部分已經死了。

因此,當您的JVM崩潰或被強制終止時,它所創建的所有線程也會停止執行。另外,當它內部運行的唯一線程是守護進程線程時,JVM會自動終止。