这个程序为什么不能实现死锁????????????
class Dead implements Runnable
{
private boolean flag;
Dead(boolean falg)
{
this.flag = flag;
}
public void run()
{
if (flag)
{
while (true)
{
synchronized(Locks.obj1)
{
System.out.println("if 1 启动!");
synchronized(Locks.obj2)
{
System.out.println("if 2 启动!");
}
}
}
}
else
{
while (true)
{
synchronized(Locks.obj2)
{
System.out.println("else 2 启动!");
synchronized(Locks.obj1)
{
System.out.println("else 1 启动!");
}
}
}
}
}}class Locks//定义锁对象
{
static Object obj1 = new Object();
static Object obj2 = new Object();
}class  DeadLock
{
public static void main(String[] args) 
{
Thread t1 = new Thread(new Dead(true));
Thread t2 = new Thread(new Dead(false)); t1.start();
t2.start(); }
}

解决方案 »

  1.   

    因为Dead(flag)写错了
    class Dead implements Runnable
    {
    private boolean flag;

    Dead(boolean flag) //你写成falg了
    {
    this.flag = flag;
    }

    public void run()
    {
    if (flag)
    {
    while (true)
    {
    synchronized(Locks.obj1)
    {
    System.out.println("if 1 启动!");
    synchronized(Locks.obj2)
    {
    System.out.println("if 2 启动!");
    }
    }
    }
    }
    else
    {
    while (true)
    {
    synchronized(Locks.obj2)
    {
    System.out.println("else 2 启动!");
    synchronized(Locks.obj1)
    {
    System.out.println("else 1 启动!");
    }
    }
    }
    }
    }}class Locks//定义锁对象
    {
    static Object obj1 = new Object();
    static Object obj2 = new Object();
    }class DeadLock
    {
    public static void main(String[] args) 
    {
    Thread t1 = new Thread(new Dead(true));
    Thread t2 = new Thread(new Dead(false));

    t1.start();
    t2.start();

    }
    }
      

  2.   

    Dead(boolean falg)
    {
       this.flag = flag;
    }主要还是你不太小心了,这块有点小错误,应该都是flag。这样创建对象调用构造方法时值没有传就去,所以就是其boolean的默认值false。导致没法得到自己想要的结果,加油。
      

  3.   

    this.flag = flag;这里的flag都是指字段flag,逻辑上有问题,但语法上没问题
      

  4.   

    class Dead implements Runnable
    {
    private boolean flag;
    Dead(boolean falg)
    {
    this.flag = flag;
    }
    public void run()
    {
    if (flag)
    {
    while (true)
    {
    synchronized(Locks.obj1)
    {
    System.out.println("if 1 启动!");
    synchronized(Locks.obj2)
    {
    System.out.println("if 2 启动!");
    }
    }
    }
    }
    else
    {
    while (true)
    {
    synchronized(Locks.obj2)
    {
    System.out.println("else 2 启动!");
    synchronized(Locks.obj1)
    {
    System.out.println("else 1 启动!");
    }
    }
    }
    }
    }}class Locks//定义锁对象
    {
    static Object obj1 = new Object();
    static Object obj2 = new Object();
    }class DeadLock
    {
    public static void main(String[] args)  
    {
    Thread t1 = new Thread(new Dead(true));
    Thread t2 = new Thread(new Dead(false));t1.start();
    t2.start();}
    }