線程死鎖怎么解決(線程死鎖)-全球資訊
2022-12-23 09:14:09 來源:關(guān)注網(wǎng)
1、產(chǎn)生死鎖的原因主要是 因?yàn)橄到y(tǒng)資源不足。
(資料圖片僅供參考)
2、 進(jìn)程運(yùn)行推進(jìn)的順序不合適。
3、 資源分配不當(dāng)?shù)取?/p>
4、 如果系統(tǒng)資源充足,進(jìn)程的資源請(qǐng)求都能夠得到滿足,死鎖出現(xiàn)的可能性就很低,否則就會(huì)因爭(zhēng)奪有限的資源而陷入死鎖。
5、其次,進(jìn)程運(yùn)行推進(jìn)順序與速度不同,也可能產(chǎn)生死鎖。
6、 產(chǎn)生死鎖的四個(gè)必要條件 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。
7、 請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。
8、 不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。
9、 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。
10、 這四個(gè)條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會(huì)發(fā)生死鎖。
11、//這是線程死鎖的一個(gè)例子。
12、你看看吧public class 死鎖 implements Runnable{ public int number=1; static Object o1=new Object(); static Object o2=new Object(); Integer a=0; Integer a1=1; public void run() { System.out.println("number..."+number); if(number==1) { synchronized(a) { try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } synchronized(a1){ System.out.println("11111111111111111"); } } } else { synchronized(a1) { try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } synchronized(a){ System.out.println("222222222222222222222222222"); } }} } public static void main(String[] args) { 死鎖 E1=new 死鎖(); 死鎖 E2=new 死鎖(); E2.number=0; Thread t1=new Thread(E1); Thread t2=new Thread(E2); t1.start(); t2.start(); }}。
本文到此分享完畢,希望對(duì)大家有所幫助。
關(guān)鍵詞: 系統(tǒng)資源 必要條件
相關(guān)閱讀
- 線程死鎖怎么解決(線程死鎖)-全球資訊
- 抗拉強(qiáng)度英文怎么寫(抗拉強(qiáng)度英文)
- 快遞價(jià)格計(jì)算器中通(快遞價(jià)格計(jì)算)-每...
- 摩托羅拉維修(摩托羅拉w161)-天天簡(jiǎn)訊
- 礦大百年校慶發(fā)生了啥(礦大百年校慶)
- 索尼w300升級(jí)版(索尼w30)-環(huán)球精選
- 大劍士對(duì)戰(zhàn)真禪圣王(大劍動(dòng)畫)
- 鼯怎么讀拼音(鼯怎么讀)-當(dāng)前觀點(diǎn)
- 兩邊臉頰長(zhǎng)痘痘(兩邊臉頰長(zhǎng)痘痘)-新動(dòng)態(tài)
- 彈射起步教學(xué)(彈射起步)-報(bào)道
- 甘母趕羚羊-全球快資訊
- 3dmax8.0激活失?。?dmax8教程)-全球新資訊

