请稍等一下,请考虑下面的代码位。可重入锁定
public class Widget {
public synchronized void doSomething() {
...
}
}
public class LoggingWidget extends Widget {
public synchronized void doSomething() {
System.out.println(toString() + ": calling doSomething");
super.doSomething();
}
}
我读到,当DoSomething的()在LoggingWidget被调用时,JVM将尝试先获得小窗口上LoggingWidget锁。
我很想知道原因。是因为JVM知道doSomething()调用了super.doSomething(),或者因为调用子类方法总是会获得超类的锁。
干杯
您应该发布一个参考,因为它不是真实的:-) – 2009-07-09 15:45:53
非常感谢您的帮助。我误解了可重入锁定的解释。在阅读您的解释之后,我回到了源代码(实践中并发书的摘录),它现在确实有意义。 – CaptainHastings 2009-07-09 15:57:35