編寫乙個簡單的死鎖

2021-09-22 20:02:09 字數 542 閱讀 8725

public class dead_lock1 

}class runnable1 implements runnable }}

} catch (exception e)

}}class runnable2 implements runnable }}

} catch (exception e)

}}

obj1 和 obj2 都是屬於類的字串常量。

main函式中,執行了兩個執行緒。

runnable1 的物件獲得了 obj1 的鎖。 thread.sleep(1000)。    等待 obj2 的鎖的釋放 來獲取 obj2 的鎖。

runnable2 的物件獲得了 obj2 的鎖。 thread.sleep(1000)。    等待 obj1 的鎖的釋放 來獲取 obj1 的鎖。

在兩個執行緒開始執行之後,如上面兩行所示。兩個執行緒執行到 thread.sleep(1000) 之後,發現要獲取的鎖都被對方占用了,而本身又不能釋放已經持有的鎖。所以雙方相互等待對方鎖的釋放,造成死鎖。

乙個簡單的死鎖

死鎖 當第乙個執行緒進入第乙個if進入鎖定o1鎖定o2的同步塊,第二個執行緒在外邊等待 當第乙個執行緒出來進入第二個if,第二個執行緒進第乙個if進入o1同步 塊,第乙個執行緒進入第二個if的o2同步 塊,兩個執行緒互相等待彼此釋放鎖,造成死鎖 public class diedlock imple...

編寫乙個簡單的shell

include include include include include include include include void getloginname void gethostname void getdir p printf s p int main char argv 32 char...

死鎖的誕生,寫乙個簡單的死鎖例項

在實際程式設計中,要盡量避免出現死鎖的情況,但是讓你故意寫乙個死鎖的程式時似乎也不太簡單 有公司會出這樣的面試題 以下是乙個簡單的死鎖例子。執行緒的同步化可能會造成死鎖,死鎖發生在兩個執行緒相互持有對方正在等待的東西 實際是兩個執行緒共享的東西 只要有兩個執行緒和兩個物件就可能產生死鎖。乙個簡單的死...