乙個死鎖的實現-
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...