多執行緒之死鎖例子

2021-08-19 16:15:47 字數 670 閱讀 7917

//例: 小明和大大 吃水果    乙個人同時有水果刀和水果  才能吃水果

//  如果小明拿到水果,而同時大大也拿到水果,則兩個執行緒一直互相等待,造成死鎖

//兩個執行緒,小明和大大同時執行

package demo4;

public class dielock extends thread }}

else}}

}catch(exception e)

}/**

* 死鎖

* 怎麼解決?沒有辦法解決

* 寫多執行緒**,一定要注意死鎖問題

*  * 分析:

* 兩把及兩把以上的鎖

* 兩條及兩條以上的執行緒

*  * 需要注意:

* 死鎖不會出現記憶體溢位  死鎖不耗費資源

但是也有特殊情況就是「小明」這個執行緒搶先拿到「水果」和「水果刀」,if裡面語句執行完了,「大大」這個執行緒這時也拿到「水果」和「水果刀」,但是這種出現的機率比較低,1000多次執行,可能出現一次,所以不做考慮,這便是乙個多執行緒死鎖的簡單例子。 

多執行緒之死鎖

1 死鎖發生的場景 有時候兩個或者多個執行緒需要訪問同乙份資源,這裡就涉及到執行緒同步的問題 thread1 synchronized object1 thread2 synchronized object2 看看上面的例子,兩個執行緒各自都有想要訪問對方的想法,可是雙方都不願意放手,就像a拿到了開...

多執行緒之死鎖

死鎖。同步中巢狀同步。你有一根筷子,我有一根筷子,我要吃飯,你不給我,我不給你,誰都吃不著飯,死鎖發生,但是死鎖不一會發生,也會存在和諧的狀態,就是你把筷子給我,我吃一口,我再把筷子給你,你再吃一口 class ticket implements runnable else while true s...

java多執行緒之 死鎖

當兩個或多個執行緒競爭試圖獲取對方持有的同步鎖時,它們都會處於阻塞狀態,除非某個執行緒主動釋放自己所持有的同步鎖,這時,死鎖就出現了。用下面這張圖很好理解 如圖,執行緒thread1和thread2都有兩個同步方法operation1 operation2 operation1 中會呼叫operat...