public class Widget {
public synchronized void doSomething() {
...
}
}public class LoggingWidget extends Widget {
public synchronized void doSomething() {
System.out.println(toString() + ": calling doSomething");
super.doSomething();
}
}今天在看某教材时看到如上代码,说可能会死锁。小弟愚钝,看不出为什么,请高手点拨,多谢!
public synchronized void doSomething() {
...
}
}public class LoggingWidget extends Widget {
public synchronized void doSomething() {
System.out.println(toString() + ": calling doSomething");
super.doSomething();
}
}今天在看某教材时看到如上代码,说可能会死锁。小弟愚钝,看不出为什么,请高手点拨,多谢!
谢谢老兄点拨,
但我理解是不是反过来才会死锁?a线程调用子类的 doSomething,此时会调用到父类的方法获取父类对象的锁,此时b线程调用父类的doSomething方法也需要获取该锁,从而造成死锁。但是楼上兄弟的说法又怎么解释呢?