死鎖就是當有兩個或兩個以上的執行緒都獲得對方的資源,但彼此有不肯放開,處於僵持狀態,此時便造成了死鎖
package cn.et.deadlock;
public class deadlock implements runnable catch (interruptedexception e)
synchronized (obj2) }}
if (flag == 0) catch (interruptedexception e)
synchronized (obj1) }}
}public static void main(string args)
}
執行結果
執行緒開始嘍!
flag=0
我已經鎖定obj2,休息0.5秒後鎖定obj1去!
flag=1
我已經鎖定obj1,休息0.5秒後鎖定obj2去!
死鎖的小案例
關於死鎖的一些小概念 死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。就我個人而言,我喜歡將死鎖叫做執行緒版的鷸蚌相爭.1.產生原因 複製的...
Lock死鎖的案例
死鎖 執行緒a和執行緒b相互等待對方持有的鎖導致程式無限死迴圈下去 1 兩個執行緒裡面分別持有兩個object物件 lock1和lock2。這兩個lock作為同步 塊的鎖 2 執行緒1的run 方法中同步 塊先獲取lock1的物件鎖,thread.sleep 然後接著獲取lock2的物件鎖。這麼做主...
死鎖案例分析
死鎖的產生以及解決辦法,看 分析,注意裡邊的注釋,自行執行。package thread 模擬買票 author yhl class thread02 implements runnable else 同步 塊 public void sale catch interruptedexception ...