我有以下三個類。在java代碼中獲取死鎖
BaseClass.java
public class BaseClass {
static {
load();
}
public static void init() {
System.out.println("base init");
}
private static void load() {
System.out.println("In load method of base class");
DerivedClass dc = new DerivedClass();
System.out.println("Object creation done.");
}
}
DerivedClass.java
public class DerivedClass extends BaseClass {
public DerivedClass() {
System.out.println("derived class constructor");
}
public static boolean isSynthetic(String _attr) {
return true;
}
}
Helper.java
public class Helper {
public static void main(String[] args) {
Thread t = new Thread() {
public void run() {
BaseClass.init();
};
};
t.start();
System.out.println("calling static method of derived class..");
System.out.println(DerivedClass.isSynthetic("test"));
}
}
當我執行從Helper.java主要方法,我得到以下輸出 -
調用派生類的靜態方法..
在基類
的負載方法此執行之後是停止但過程仍在運行。 所以看起來有一些僵局,但我不明白這是爲什麼。 需要幫助。
下面的鏈接回答你的問題。 [http://stackoverflow.com/questions/10698516/behavior-of-static-blocks-with-inheritance](http://stackoverflow.com/questions/10698516/behavior-of-static-blocks-with-inheritance ) –