乙個關於 死鎖 的實現Demo

2021-06-26 22:42:19 字數 510 閱讀 8241

乙個死鎖的實現-

public class mytestsisuo  catch (interruptedexception e) 

system.out.println("t1 ---get o1");

//需要資源o2 但是 t2 獨佔(未釋放) -->互相競爭資源-->死鎖

synchronized(o2)}}

};thread t2 = new thread()}}

};t1.start();

t2.start();} }

實現過程:

有公共資源o1,o2;程式開始,執行緒t2搶占資源o2,在同步**塊中,o1也被搶占;執行緒t1睡眠等待1000ms;

t2在需要資源o1時,此時發現被t1獨佔,而t1此時睡眠醒來,需要資源o2,發現被t2獨佔;由此,產生 死鎖;

乙個JAVA死鎖的Demo

死鎖的條件肯定是兩個鎖以上時,才會 發生死鎖,以下demo是模擬的兩個鎖,通過兩個執行緒分別呼叫兩個方法,這兩個方法加鎖的順序正好相反,從而造成兩個執行緒相互等待,互不釋放鎖 package com.threaddemo public class deadlocksample private voi...

乙個死鎖的簡易好理解的Demo

package 死鎖demo public class deadlock implements runnable override public void run catch interruptedexception e synchronized o2 else catch interruptede...

關於volatile的乙個有趣demo

這是乙個測試volatile的例子。首先我們td不新增volatile,以下的邏輯,建立乙個執行緒讓它去修改該flag,但不是讓它立刻去修改,而是先讓子執行緒休息一段時間,好讓主線程進入狂讀flag的狀態,這樣做是為了防止低執行強度下 cpu主動重新整理了快取。之後我們進行修改。public cla...