可重入锁的问题
wyc_ 2014-11-24 03:46:39 如果没有可重入的锁,这段看上去很自然的代码就会产生死锁。因为Widget和LoggingWidget
中的doSomething都是synchronized类型的,都会在处理前试图获得Widget的锁。倘若内部锁
不是可重入的,super.doSomething的调用者就永远无法得到Widget的锁,因为锁已经被占有。
public class Widget
{
public synchronized void doSomething(){}
}
public class LoggingWidget extends Widget
{
public synchronized void doSomething(){
super.doSomething();
}
}
红色部分怎么理解?调用LoggingWidget的doSomething,这时的锁不是加在子类对象上的吗?