这个程序为什么不能实现死锁????????????
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(); }
}
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(); }
}
解决方案 »
- JButton改变Icon的问题
- 使用J2EE 1.4自带的工具打包的EJB ,老是提示失败,无法装载类,是怎么回事啊。
- 我有一个笔试,题目,哪位大侠能帮忙作一下笔试题目?
- 有没有java的snmp库啊?
- 菜鸟提问,关于main()
- 用JAVA实现一个点对点语音聊天器!?
- 能否实现applet之间的通信,详情见内......
- 谁知道哪儿能下载access的jdbc驱动程序吗?
- 各位仁兄,有人知道如何让运行于windows机上软件可以在苹果机os2上正常运行啊?是否可以在苹果机的os2上装个软件即可?不胜感谢!!!
- 能具体说说static的用处吗?
- UDP编程出现java.io.IOException: Invalid argument 异常
- 小程序的错误
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();
}
}
{
this.flag = flag;
}主要还是你不太小心了,这块有点小错误,应该都是flag。这样创建对象调用构造方法时值没有传就去,所以就是其boolean的默认值false。导致没法得到自己想要的结果,加油。
{
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();}
}