鍍金池/ 問答/Java  數(shù)據(jù)庫  網(wǎng)絡安全/ Java線程死鎖:為何Java不能像數(shù)據(jù)庫那樣從死鎖中恢復?

Java線程死鎖:為何Java不能像數(shù)據(jù)庫那樣從死鎖中恢復?

問題 JVM可否做到和數(shù)據(jù)庫事務處理一樣,對死鎖進行處理?如果不可以,那么想知道原因是什么?

拋磚引玉:

《Java并發(fā)編程實戰(zhàn)》中描述順序死鎖現(xiàn)象,提到哲學家進餐問題,數(shù)據(jù)庫事務在順序死鎖發(fā)生時會選擇一個犧牲者釋放資源并可以重新執(zhí)行,此時事務可正常完成。
由此想到,JVM可否在死鎖發(fā)生時,找到犧牲者釋放資源?如果在JVM層面能夠完成死鎖避免,多線程編程是否會簡單很多?

重申一下,問題是JVM可否做到和數(shù)據(jù)庫事務處理一樣,對死鎖進行處理?如果不可以,那么想知道原因是什么?

回答
編輯回答
編輯回答
咕嚕嚕

死鎖避免最多是lock()方法在將會導致死鎖時拋出一個exception。這使多線程編程更復雜了吧?想象每個lock()方法都有可能exception的情況。。所以PLSQL也挺難寫的,PLSQL就是會遇到這種死鎖導致的exception,然后總是要想辦法處理。

2017年11月27日 15:59