1
當運行在其中的多個線程 陷入死鎖時,Java虛擬機是否有可能自行掛起? 我想問這個問題的目的是: 如果我知道線程可能死鎖,我想把一些恢復邏輯,如超時 什麼的,並處理這種情況。 如果Java虛擬機自身掛起,則不起作用。線程死鎖可以掛起整個JVM本身嗎?
Class TwoThreads{
try{
Thread threadA = new Thread();
Thread threadB = new Thread();
// some multithreaded logic goes here where deadlock possible
catch(Throwable t){
threadA.interrupt();
// some handler logic
}
}
根據定義,死鎖不會拋出異常。它會讓死鎖的線程永遠等待。如果死鎖是可能的,那麼修復代碼,使它不再可能。 –
@JB Nizet Tks。我的例子是錯誤的,但我的問題基本上是知道線程死鎖是否可以掛起整個JVM,或者其他部分的應用程序仍然可以繼續運行? – supernova
根據定義,死鎖會導致一些線程永遠等待。如果這些死鎖的線程是你的應用程序的唯一線程,那麼什麼也不會發生。如果有其他線程在運行,那麼它們將繼續運行。 –