執行緒同步之死鎖

2021-05-23 00:15:21 字數 313 閱讀 6102

public class stateobject",i);

public void deadlock2()

",i);

stateobject state1= new stateobject();

stateobject state2= new stateobject();

new thread(new samplethread(state1,state2).deadlock1)).start();

new thread(new samplethread(state1,sate2).deadlock2)).start();

執行緒同步之死鎖

什麼是死鎖呢?死鎖就是多個程序或者執行緒訪問同乙個資源的時候,誰也搶不到資源,誰也不退讓讓其他程序或者執行緒訪問,使用者看到的就是程式卡住了。舉個例子吧,在乙個沒有紅綠燈的十字路口,來了四輛小汽車,每個路口都只能讓乙個汽車通過。現在這種情況四輛車都過不了汽車,這就發生了死鎖。發生死鎖的原因?第一種情...

執行緒同步之死鎖

造成死鎖的兩種情況 1 對共享資源鎖了2次。while 1 如上,鎖了兩次,此時現象是 輸出了一遍hello,便不動了 分析 輸出hello後,pthread mutex lock mutex 又要加鎖,加鎖的話,就要先等上一把鎖解鎖,否則就處於阻塞狀態,而上一把鎖就是他本身,他本身又沒有解鎖,所以...

多執行緒之死鎖

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