ES2016_14353285 涂佳靈
一、死鎖停在第幾次的截圖
2.jpg
二出吹、產(chǎn)生死鎖的四個條件
1尔邓、互斥條件:一個資源每次只能被一個進(jìn)程使用
2象踊、請求與保持條件:一個進(jìn)程因請求資源而阻塞時,對已獲得的資源保持不放
3藕溅、不剝奪條件:進(jìn)程已獲得的資源匕得,在未使用完之前,不能強(qiáng)行剝奪
4巾表、循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系
三汁掠、產(chǎn)生死鎖的原因
3.jpg
4.jpg
在主線程中,a要調(diào)用methodA這個函數(shù)集币,需要參數(shù)b考阱。在子線程中,b要調(diào)用methodB這個函數(shù)鞠苟,需要參數(shù)a羔砾。當(dāng)
synchronized void methodA(B b){
b.last();
}
和
synchronized void methodB(A a){
a.last();
}
同時執(zhí)行時,會進(jìn)入忙等待偶妖,被阻塞姜凄。
即當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時,其他線程對object中所有其他synchronized(this)同步代碼塊的訪問將被阻塞趾访。