線程死鎖,死鎖條件,如何避免死鎖

死鎖:有兩個(gè)或兩個(gè)以上線程相互持有對(duì)方所需要的資源,而使得這些線程無法往下執(zhí)行下去。在Java中程序執(zhí)行進(jìn)入對(duì)象的synchronized代碼塊中,執(zhí)行的線程是獨(dú)占該資源的。在執(zhí)行完成前的這段時(shí)間里,其他線程都不能進(jìn)入該代碼塊中執(zhí)行,直到占有線程退出syncronized代碼塊,其他線程才能進(jìn)入該syncronized代碼塊。當(dāng)線程相互持有對(duì)方線程所需要的系統(tǒng)資源時(shí),或相互等待對(duì)方釋放系統(tǒng)資源,當(dāng)相互都不釋放所占有的資源時(shí),死鎖也就由此產(chǎn)生。


死鎖條件:1.互斥條件----進(jìn)程對(duì)所分配到的資源具有排他性,即一個(gè)資源只能被一個(gè)進(jìn)程鎖擁有,直到進(jìn)程釋放資? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 源。

? ? ? ? ? ? ? ? ? ? 2.請(qǐng)求和保持條件----一個(gè)進(jìn)程因請(qǐng)求被占用的資源而發(fā)生阻塞時(shí),對(duì)自己已獲得的資源保持持有不釋放

? ? ? ? ? ? ? ? ? ? 3.不剝奪條件----任何一個(gè)資源在沒有被進(jìn)程釋放前,其他進(jìn)程都無法對(duì)其剝奪占有。

? ? ? ? ? ? ? ? ? ? 4.循環(huán)等待條件----當(dāng)發(fā)生死鎖時(shí),所等待的進(jìn)程必定會(huì)形成一個(gè)環(huán)路,造成永久堵塞。



避免死鎖:1.加鎖順序-----當(dāng)多個(gè)線程要相同的一些鎖,但是按照不同的順序加鎖,死鎖的情況發(fā)生率較高,如果,程序運(yùn)行能確保所有線程都是按照相同的順序去獲得鎖,那么死鎖就不會(huì)發(fā)生。

? ? ? ? ? ? ? ? ? ? 2.加鎖時(shí)限-----加一個(gè)超時(shí)時(shí)間,若一個(gè)線程沒有在給定的時(shí)間內(nèi)成功獲取所需的鎖,則進(jìn)行回退操作,并釋放自己本身所持有的鎖,一段隨機(jī)時(shí)間之后,重新去獲取鎖。

? ? ? ? ? ? ? ? ? ? ? 3.死鎖檢測(cè)-----死鎖檢測(cè),每當(dāng)線程去獲取鎖的時(shí)候,會(huì)在線程和鎖相關(guān)的數(shù)據(jù)結(jié)構(gòu)中將其記下,除此之外,每當(dāng)線程請(qǐng)求鎖,都需要記錄在數(shù)據(jù)結(jié)構(gòu)中。死鎖檢測(cè)是一個(gè)死鎖避免機(jī)制。他主要針對(duì)的時(shí)那些不可能實(shí)現(xiàn)按序加鎖并且鎖超時(shí)也不可行的應(yīng)用場(chǎng)景。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、競態(tài)條件: 定義:競態(tài)條件指的是一種特殊的情況,在這種情況下各個(gè)執(zhí)行單元以一種沒有邏輯的順序執(zhí)行動(dòng)作,從而導(dǎo)致...
    Hughman閱讀 1,434評(píng)論 0 7
  • 在開發(fā)Java多線程應(yīng)用程序中,各個(gè)線程之間由于要共享資源,必須用到鎖機(jī)制。Java提供了多種多線程鎖機(jī)制的實(shí)現(xiàn)方...
    千淘萬漉閱讀 7,104評(píng)論 1 33
  • 即使已經(jīng)知道會(huì)發(fā)生什么,在整個(gè)大樓發(fā)生爆炸前的那一刻路小花還是義無反顧的沖了進(jìn)去 隨后的爆炸聲驚動(dòng)了整個(gè)城市 俄羅...
    墨小花閱讀 348評(píng)論 0 1
  • . A life full of good habits will be a life conforming wi...
    小綠植物閱讀 250評(píng)論 0 0
  • 2018-4-30 6:30-22:30 雖說51放假只有簡短的兩日,一周上班都是過著三點(diǎn)一線的生活,對(duì)于...
    周游遠(yuǎn)行閱讀 460評(píng)論 0 1

友情鏈接更多精彩內(nèi)容