大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 淺談線程死鎖

淺談線程死鎖

更新時(shí)間:2020-11-09 17:54:22 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1455次

線程死鎖是指兩個(gè)或兩個(gè)以上的線程在執(zhí)行過程中,因爭(zhēng)奪資源而造成的互相等待的現(xiàn)象,在無外力作用的情況下,這些線程會(huì)一直相互等待而無法繼續(xù)運(yùn)行下去。


在許多應(yīng)用中進(jìn)程需要以獨(dú)占的方式訪問資源,當(dāng)操作系統(tǒng)允許多個(gè)進(jìn)程并發(fā)執(zhí)行時(shí)可能會(huì)出現(xiàn)進(jìn)程永遠(yuǎn)被阻塞現(xiàn)象,如兩個(gè)進(jìn)程分別等待對(duì)方所占的資源,于是兩者都不能執(zhí)行而處于永遠(yuǎn)等待狀態(tài),此現(xiàn)象稱為線程死鎖。

image.png


結(jié)合上圖中的線程圖,我們可以看出線程 A 已經(jīng)持有了資源 2,它同時(shí)還想申請(qǐng)資源 1,線程 B 已經(jīng)持有了資源 1,它同時(shí)還想申請(qǐng)資源 2,所以線程 1 和線程 

2 就因?yàn)橄嗷サ却龑?duì)方已經(jīng)持有的資源,而進(jìn)入了死鎖狀態(tài)。

產(chǎn)生死鎖的四個(gè)必要條件如下。當(dāng)下邊的四個(gè)條件都滿足時(shí)即產(chǎn)生死鎖,即任意一個(gè)條件不滿足既不會(huì)產(chǎn)生死鎖。


一、產(chǎn)生線程死鎖四個(gè)必要條件

1.互斥條件:指線程對(duì)已經(jīng)獲取到的資源進(jìn)行排它性使用,即該資源同時(shí)只由一個(gè)線程占用。如果此時(shí)還有其他線程請(qǐng)求獲取該資源,則請(qǐng)求者只能等待,直至占有資源的線程釋放該資源。

2.請(qǐng)求并持有條件:指一個(gè)線程已經(jīng)持有了至少一個(gè)資源,但又提出了新的資源請(qǐng)求,而新資源已被其他線程占有,所以當(dāng)前線程會(huì)被阻塞,但阻塞的同時(shí)并不釋放自己已經(jīng)獲取的資源。

3.不可剝奪條件:指線程獲取到的資源在自己使用完之前不能被其他線程搶占,只有在自己使用完畢后才由自己釋放該資源。

4.環(huán)路等待條件:指在發(fā)生死鎖時(shí),必然存在一個(gè)線程—資源的環(huán)形鏈,即線程集合{T0,T1,T2,…,Tn}中的 T0 正在等待一個(gè) T1 占用的資源,T1 正在等待 T2 占用的資源,……Tn 正在等待已被 T0 占用的資源。

根據(jù)上面的產(chǎn)生死鎖的四個(gè)必要條件我們舉個(gè)常見的死鎖例子:進(jìn)程A中包含資源A,進(jìn)程B中包含資源B,A的下一步需要資源B,B的下一步需要資源A,所以它們就互相等待對(duì)方占有的資源釋放,所以也就產(chǎn)生了一個(gè)循環(huán)等待死鎖。


二、消除線程死鎖的幾種方式

1.最簡(jiǎn)單、最常用的方法就是進(jìn)行系統(tǒng)的重新啟動(dòng),不過這種方法代價(jià)很大,它意味著在這之前所有的進(jìn)程已經(jīng)完成的計(jì)算工作都將付之東流,包括參與死鎖的那些進(jìn)程,以及未參與死鎖的進(jìn)程;

2.撤消進(jìn)程,剝奪資源。終止參與死鎖的進(jìn)程,收回它們占有的資源,從而解除死鎖。這時(shí)又分兩種情況:一次性撤消參與死鎖的全部進(jìn)程,剝奪全部資源;或者逐步撤消參與死鎖的進(jìn)程,逐步收回死鎖進(jìn)程占有的資源。一般來說,選擇逐步撤消的進(jìn)程時(shí)要按照一定的原則進(jìn)行,目的是撤消那些代價(jià)最小的進(jìn)程,比如按進(jìn)程的優(yōu)先級(jí)確定進(jìn)程的代價(jià);考慮進(jìn)程運(yùn)行時(shí)的代價(jià)和與此進(jìn)程相關(guān)的外部作業(yè)的代價(jià)等因素;

3.進(jìn)程回退策略,即讓參與死鎖的進(jìn)程回退到?jīng)]有發(fā)生死鎖前某一點(diǎn)處,并由此點(diǎn)處繼續(xù)執(zhí)行,以求再次執(zhí)行時(shí)不再發(fā)生死鎖。雖然這是個(gè)較理想的辦法,但是操作起來系統(tǒng)開銷極大,要有堆棧這樣的機(jī)構(gòu)記錄進(jìn)程的每一步變化,以便今后的回退,有時(shí)這是無法做到的。


以上就是我們對(duì)線程死鎖的產(chǎn)生條件和消除死鎖的方法的介紹,這些只是死鎖中非常淺顯易懂的部分知識(shí)點(diǎn),想要深入探究死鎖的原理和死鎖檢測(cè)算法的小伙伴可以觀看本站的Java多線程教程,學(xué)習(xí)更多的多線程知識(shí)。


提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产精品91av| 911国产在线观看精品 | 全毛片 | 色婷婷久久久swag精品 | 欧美专区亚洲 | 四虎影视国产884a精品亚洲 | 一区二区不卡久久精品 | 日韩毛片免费看 | 久久这里只有精品9 | 97国产免费全部免费观看 | 日韩中文字幕视频在线观看 | 免费精品国产自产拍观看 | 97精品国产97久久久久久 | 影音先锋久草 | 香蕉tv亚洲专区在线观看 | 奇米影视在线播放 | 99re热这里只有精品视频 | 亚洲欧美日韩精品久久亚洲区 | 日韩中文欧美 | 天天干天天干天天干天天干天天干 | 国产成人精品一区二区免费视频 | 四虎在线视频免费观看 | 99热久久国产精品 | 中文字幕免费观看视频 | 香蕉视频一级片 | 欧美亚洲三级 | 国产欧美在线观看视频 | 日本精品中文字幕在线不卡 | 2021成人国产精品 | 久久99国产亚洲精品 | 日日草天天干 | 看黄网站在线观看 | www久久只有这里有精品 | 狠狠舔| 日本欧美一区二区三区乱码 | 激性欧美激情在线播放16页 | 国产成 人 综合 亚洲网 | 欧美视频www | 欧美 日| 伊人久久精品一区二区三区 | 亚洲激情网站 |