原理:发生在锁的嵌套中,A,B两个锁(需要保证锁具有唯一性),某程序先需要A锁,其次是B锁
另一程序先需要B锁,然后需要A锁
两程序均执行了第一步,然后互相卡住,这就是死锁
(就好像两个人打架,互相掐住对方,都要对方先松手,但有谁会先松手呢?就只能这样死耗着)
代码实现
private String sa ="sa";
private String sb = "sb";//两个对象监视器,保证唯一性
private int i = 0;
public void run()
{
while(true)//进行死循环,保证多次抢占资源
{if(i%2){//
synchronized(sa){}
synchronized(sb){}
}else{
synchronized(sb){}
synchronized(sa){}
}
i++;//确保线程会运行不同的if else
}
}