Статические блоки выполняются 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);
    }
}