Java同步中的死锁问题
死锁出现的原因:两个同步代码块或者同步函数的锁不同。
下边是一个例子
class Lock{
public static Object locka=new Object();
public static Object lockb=new Object();
}
class Test implements Runnable{
private boolean flag;
public Test(boolean flag){
this.flag=flag;
}
@Override
public void run() {
if(flag){
synchronized (Lock.locka){
System.out.println("if--locka");
synchronized (Lock.lockb){
System.out.println("if--lockb");
}
}
}else{
synchronized (Lock.lockb){
System.out.println("else--lockb");
synchronized (Lock.locka){
System.out.println("else--locka");
}
}
}
}
}
public class DeadLock{
public static void main(String []args){
Thread t1=new Thread(new Test(true));
Thread t2=new Thread(new Test(false));
t1.start();
t2.start();
}
}