死锁示例


class Data{
    String name;
    Integer age;
    public Data(String name,Integer age){
        this.name=name;
        this.age = age;
    }
}
class A implements Runnable{
    Data data;
   public A(Data data){
       this.data = data;
   }
    @Override
    public void run() {
        while(true){
            synchronized (data.name){
                synchronized (data.age){
                    System.err.println("A->"+data.name);
                }
            }
        }
    }
}

class B implements Runnable{
    Data data;
    public B(Data data){
        this.data = data;
    }
    @Override
    public void run() {
        while(true){
            synchronized (data.age){
                synchronized (data.name){
                    System.err.println("B->"+data.name);
                }
            }
        }
    }
}
public class Sisuo {
    public static void main(String args[]){
        Data d = new Data("zs",12);
        new Thread(new A(d)).start();
        new Thread(new B(d)).start();
    }
}

posted @ 2018-02-26 16:47  xiaofei001  阅读(105)  评论(0)    收藏  举报