發生死鎖的原因通常是兩個物件的鎖相互等待造成的。
以下用乙個例項來構造這樣的情況:
package basic.e_deadlock;
import org.apache.log4j.logger;
public class testdeadlock
}class mythread extends thread
@override
public void run()
}class deadlockrisk
private resource resourcea = new resource();
private resource resourceb = new resource();
public void read()
} logger.debug("**********=read end**********===");
} public void write(int a, int b)
} logger.debug("**********=write end**********===");
}}
執行結果:
0 [執行緒1] debug basic.e_deadlock.deadlockrisk - **********=read begin**********=
0 [執行緒2] debug basic.e_deadlock.deadlockrisk - **********=read begin**********=
0 [執行緒4] debug basic.e_deadlock.deadlockrisk - **********=read begin**********=
0 [執行緒3] debug basic.e_deadlock.deadlockrisk - **********=read begin**********=
0 [執行緒1] debug basic.e_deadlock.deadlockrisk - read():執行緒1獲取了resourcea 的鎖!
0 [執行緒1] debug basic.e_deadlock.deadlockrisk - read():執行緒1獲取了resourceb 的鎖!
0 [執行緒1] debug basic.e_deadlock.deadlockrisk - **********=read end**********===
0 [執行緒2] debug basic.e_deadlock.deadlockrisk - read():執行緒2獲取了resourcea 的鎖!
0 [執行緒1] debug basic.e_deadlock.deadlockrisk - **********=write being**********=
1 [執行緒2] debug basic.e_deadlock.deadlockrisk - read():執行緒2獲取了resourceb 的鎖!
1 [執行緒2] debug basic.e_deadlock.deadlockrisk - **********=read end**********===
1 [執行緒2] debug basic.e_deadlock.deadlockrisk - **********=write being**********=
1 [執行緒1] debug basic.e_deadlock.deadlockrisk - write():執行緒1獲取了resourceb 的鎖!
1 [執行緒4] debug basic.e_deadlock.deadlockrisk - read():執行緒4獲取了resourcea 的鎖!
注意:此時執行緒1在等待resourceb的資源,執行緒2在等待resourcea的資源。兩個執行緒在相互等待,出現死鎖。 Java多執行緒 死鎖
死鎖 不同的執行緒分別占用對方需要的同步資源不放棄,都在等待對方放棄自己的需要的同步資源,就形成了執行緒的死鎖 解決方法 1.專門的演算法 原則 2.儘量減少同步資源的定義 此處插入testdeadlock 死鎖問題,處理執行緒同步時容易出現 public class testdeadlock ca...
Java 多執行緒死鎖
概念 所謂死鎖是指兩個或兩個以上的程序在執行過程中,因爭奪同一資源而造成的一種互相等待的現象,若無外力作用,它們都將無法進行下去,此時稱系統處於死鎖狀態或系統產生了死鎖,class k extends thread public void run else catch interruptedexce...
Java多執行緒死鎖模型
要素 兩個執行緒 兩把鎖 兩組巢狀的同步 塊。下面就用買賣場景來模擬線程死鎖。package com.zzj.thread 執行緒死鎖 author administrator public class deaththread 買者 author administrator class money ...