死鎖:就是同步中嵌套同步,兩個同步都想要先運行,互不相讓,致使程序無法運行。
一個死鎖程序
class Test
{
private boolean flag;
Test(boolean flag)
{
this.flag=flag;
}
public void run()
{
if(flag)
while(true)
{
synchronized(mylock.locka)
{
System.out.println("if lock" );
synchronized(mylock.lockb)
{
System.out.println("if lockb");
}
}
}
}
else
{
while(true)
{
synchorized(mylock.lockb)
{
System.out.println("else lockb");
synchronized(mylock.locka)
{
System.out.println("else locka")
}
}
}
}
}
class mylock
{
static object locka = new object();
static object lockb = new object();
}
class DemolockTest
{
public static void main (string[] args)
{
Thread t1 = new Thread(new Test(true));
Thread t2 = new Thread(new Test(flase));
t1.start();
t2.start();
}
}