//o1 和o2 是同一把锁吗,为什么没有出现死锁的现象
class Test implements Runnable
{
// o1 和 o2 是同一把锁吗?
Object o1 = new Object();
Object o2 = new Object();
private boolean flag ;
Test(boolean flag)
{
this.flag = flag ;
}
public void run()
{
if(flag)
{
synchronized(o1)
{
System.out.println("if o1");
synchronized(o2)
{
System.out.println("if o2");
}
}
}
else
{
synchronized(o2)
{
System.out.println("else o2");
synchronized(o1)
{
System.out.println("else o1");
}
}
}
}
}
class SiSuo
{
public static void main(String[] args)
{
new Thread(new Test(true)).start();
new Thread(new Test(false)).start();
}
}
|
|