使用以下代碼,如果線程調用LoggingWidget.doSomething(), 線程必須經過的鎖定獲取順序是什麼? (即不上算LoggingWidget鎖定,然後再沾到工具?鎖)鎖定採集訂單
public class Widget {
public synchronized void doSomething() {
}
}
public class LoggingWidget extends Widget {
public synchronized void doSomething() {
System.out.println(toString() + ": calling doSomething");
super.doSomething();
}
}
最後一句話是錯的恕我直言。無論您是否擁有LoggingWidget或Widget,doSomething()中都只有一個'this'。 – 2010-03-10 10:22:16
是的,如果你在這兩種方法中調用'System.identityHashCode(this)',你將得到相同的值 – 2010-03-10 10:54:41