У меня есть три класса.Получение взаимоблокировки в 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) –