您的位置:首页 > 其它

死锁实例

2015-08-18 18:31 471 查看
package thread;

public class DeadLockTest implements Runnable {

//发生死锁的对象一定是静态的
public static Object o1=new Object (),o2=new Object();
private int flag=1;

public static void main(String[] args) {
// TODO Auto-generated method stub
DeadLockTest dl1=new DeadLockTest();
DeadLockTest dl2=new DeadLockTest();
dl1.setFlag(1);
dl2.setFlag(2);
Thread t1=new Thread(dl1);
Thread t2=new Thread(dl2);
t1.start();
t2.start();
}

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("falg="+this.flag);
if(this.flag==1){
//o1和o2都是静态的成员,不管实例化多少个对象,一个静态的成员都只有一个
synchronized(o1){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized(o2){
System.out.println("1");
}
}
}
if(this.flag==2){
synchronized(o2){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (o1) {
System.out.println("2");

}
}

}
}

public int getFlag() {
return flag;
}

public void setFlag(int flag) {
this.flag = flag;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: