本帖最后由 blackcaismine 于 2013-3-22 10:35 编辑
因为静态的话,z和L的对象是唯一的,如果你不加静态,那么当你
DeadLock d=new DeadLock();
DeadLock d1=new DeadLock();
的时候,new出来的是俩组z与L的对象,那么就有两组z与L的锁,就不会产生死锁了
如果你在DeadLock里面加上一个构造函数
class DeadLock implements Runnable
{
boolean flag;
Z z=null;
L l=null;
DeadLock(Z z,L l)
{
this.z = z;
this.l = l;
}
public void run()
{
.....
然后在主函数里new z与L 传递进去,就会产生死锁了。
Z z=new Z();
L l=new L();
DeadLock d=new DeadLock(z,l);
DeadLock d1=new DeadLock(z,l);
|