請稍等一下,請考慮下面的代碼位。可重入鎖定
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