Java多線程詳解(八)死鎖

死鎖

多個線程各自佔有一些共享資源,並且互相等待其他線程佔有的資源才能運行,而導致兩個或者多個線程都在等待對方釋放資源,都停止執行的情形。某一個同步塊同時擁有“兩個以上對象的鎖”時,就可能會發生“死鎖”的問題。

死鎖的避免方法

  • 產生死鎖的四個必要條件:

  1. 互斥條件:一個資源每次只能被一個進程使用
  2. 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放
  3. 不剝奪條件:進程已獲得的資源,在未使用完之前,不能強行剝奪
  4. 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關係

上面列出了死鎖的四個必要條件,我們只要想辦法破壞其中任意一個或多個條件就可以避免死鎖發生

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章