为什么非可重入锁会导致死锁
public class Count{
Lock lock = new Lock();
public void print(){
lock.lock();
doAdd();
lock.unlock();
}
public void doAdd(){
lock.lock();
//do something
lock.unlock();
}
}
上面代码我们可以看到,效执行print,拿到print的锁,然后print中调用的doAdd,但是doAdd又有一个锁,那么需要去获取doAdd的锁,但是这时由于print我们还没有执行完,所以print的锁还不能释放,但是这时有需要获取到doAdd的锁,这样就导致了死锁。