Статические блоки выполняются JRM при первой загрузке класса, так?
Один раз, ведь так?
Тогда зачем в них нужна синхронизация для потоков?
Не важно сколько потоков будет использовать класс - загружен он будет только 1 раз и статические блоки отработают только 1 раз. Кажется задача высосана из пальца?
УСЛОВИЕ ЗАДАЧИ----------------------
Внутри класса OurPresident в статическом блоке создай синхронизированный блок.
Внутри синхронизированного блока инициализируй president.
===================================================
public class OurPresident {
private static OurPresident president;
private OurPresident() {
}
public static OurPresident getOurPresident() {
return president;
}
static {
synchronized (OurPresident.class){
president=new OurPresident();}
}
}
public class Solution {
public static void main(String[] args) {
OurPresident expectedPresident = OurPresident.getOurPresident();
OurPresident ourPresident = OurPresident.getOurPresident();
System.out.println(expectedPresident == ourPresident);
}
}