/*
多執行緒下的單例
//餓漢式
//懶漢式
多層判斷可解決懶漢式安全和效率的問題
*/
/*
雙鎖巢狀,產生死鎖
*/
class Test implements Runnable{
private boolean flag;
Test(boolean flag){
this.flag=flag;
}
public void run(){
if(flag){
while(true){
synchronized(MyLock.a){
System.out.println(Thread.currentThread().getName()+"if .....+a");
synchronized(MyLock.b){
System.out.println("if .....+b");
}
}
}
}
else{
while(true){
synchronized(MyLock.b){
System.out.println("else .....+b");
synchronized(MyLock.a){
System.out.println("else .....+a");
}
}
}
}
}
}
class MyLock{
public static final Object a = new Object();
public static final Object b = new Object();
}
class DeadLockTest{
public static void main(String args[]){
Test t= new Test(true);
Test w = new Test(false);
Thread t1 = new Thread(t);
Thread t2 = new Thread(w);
t1.start();
t2.start();
}
}
JAVA日記 (共50篇) 上一篇:執行緒同步 下一篇:java執行緒通訊案例