关于死锁的问题:
死锁的本质就是同步中间嵌套同步,但是二者使用的锁不同,导致死锁。
死锁很神奇,请慢慢体会
package day6;
/**
* 死锁
*
* 关于死锁的问题:
* 程序中出现死锁的可能代码时,死锁不一定会发生;
* 但是出现死锁的程序中断和异常运行的可能性会大大的提升
* 我们在程序的运行中应该尽量的去避免死锁。
* (防止出现不同的锁的情况)
* @author mzy
*
*/
publicclassTest4{
publicstaticvoidmain(String[]args){
Lockl1=newLock(true);
Lockl2=newLock(false);
Threadt1=newThread(l1);
Threadt2=newThread(l2);
t1.start();
t2.start();
}
}
classLockimplements Runnable{
privatebooleanflag;
Lock(booleanflag){
this.flag=flag;
}
publicvoidrun(){
if(flag){
synchronized(MyLock.lock1){
System.out.println("if o1");
synchronized(MyLock.lock2){
System.out.println("if o2");
}
}
}else{
synchronized(MyLock.lock2){
System.out.println("else o2");
synchronized(MyLock.lock1){
System.out.println("else o1");
}
}
}
}
}
classMyLock{
staticObjectlock1=newObject();
staticObjectlock2=newObject();
}