死鎖的學習筆記

2021-08-04 12:51:29 字數 520 閱讀 7060

一、什麼是死鎖?如何避免死鎖?

所謂死鎖:就是指兩個或兩個以上的程序在執行過程中,因為爭奪資源而造成的一種互相等等待的現象,若無外力作用,他們將無法進行下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序成為死鎖程序。由於資源占用是互斥的,當摸個程序提出申請資源後,使得有關程序在無外力的刺耳住下,永遠分配不到必須的資源而無法繼續執行,這就產生了一種特殊現象死鎖。死鎖的發生具備以下4個必要條件

1、互斥條件:指程序對所分配到的資源進行排他性使用,即在一段時間內某資源只由乙個程序占用。如果此時還有其他程序請求資源,則請求者只能等待,直至占有資源的程序用畢釋放。

2、請求和保持條件:值程序已經保持至少乙個資源,但又提出了新的資源請求,而該資源已被其他程序占有,此時請求程序阻塞,但又對自己獲得的其他資源保持不放。

3、不剝奪條件:指程序已獲得資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。

4、只在發生死鎖時,必然存在乙個程序--資源的環形鏈。指的是p0等待p1的資源,p1等待p2的資源,pn等待p0的資源,形成了死迴圈

死鎖學習筆記

資源分配圖 死鎖的預防與避免 銀行家演算法 難點 死鎖的檢測與恢復 死鎖發生的四個必要條件 互斥占有並等待 非搶占迴圈等待 滿足以上四個條件,不一定發生死鎖 但死鎖的發生一定要滿足上述四個條件。如果是單例項資源,滿足上述四個條件則一定會發生死鎖 死鎖是指在程序集合內的所有程序都處於阻塞狀態,而且其中...

java學習筆記88 死鎖

在程式中是不允許出現死鎖情況,一旦發生那麼只能手動停止jvm的執行,然後查詢並修改產生死鎖的問題 簡單的描述死鎖就是 倆個執行緒t1和t2,t1拿著t2需要等待的鎖不釋放,而t2又拿著t1需要等待的鎖不釋放。注 可以通過jconsole檢視到執行緒死鎖的情況 例如 public class thre...

多執行緒學習筆記(三)死鎖

一 什麼是死鎖?執行緒死鎖描述的是這樣一種情況 多個執行緒同時被阻塞,他們中的乙個或者全部都在等待某個資源被釋放。由於執行緒無限期地阻塞,因此程式不可能正常終止。二 產生死鎖的條件 互斥條件 該資源任意乙個時刻只由乙個執行緒占用。請求與保持條件 乙個執行緒因請求資源而阻塞時,對已獲得的資源保持不放。...