JavaRush /Курсы /Java Core /Даешь synchronized! Практическая версия

Даешь synchronized! Практическая версия

Java Core
7 уровень, 4 лекция
Открыта

— Привет, Амиго!

9
Задача
Java Core, 7 уровень, 4 лекция
Недоступна
Синхронизированные заметки
Синхронизированные заметки
5
Задача
Java Core, 7 уровень, 4 лекция
Недоступна
Синхронизированные заметки 2
Синхронизированные заметки 2
9
Задача
Java Core, 7 уровень, 4 лекция
Недоступна
Сад-огород
Сад-огород
9
Задача
Java Core, 7 уровень, 4 лекция
Недоступна
Синхронизированный президент
Синхронизированный президент
5
Задача
Java Core, 7 уровень, 4 лекция
Недоступна
МВФ
МВФ
Комментарии (251)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Euraks Уровень 27
21 октября 2026
com.javarush.task.task17.task1706 и com.javarush.task.task17.task1707 в задаче синхронизация избыточна так как поле статическое, статическое поле инициализируются при создании объекта соответственно не может отсутствовать и не может существовать больше 1 экземпляра
TimJohnzz Уровень 22
3 октября 2026
Забавно читать про шутки singleton и ourPresident в 2026 😶
Grigoryvvv Уровень 28 Expert
24 сентября 2026
24.09.2026 / 27 уровень
27 февраля 2026
Как будто бы и не сложно особо
C0N5P1RACY Уровень 42
4 февраля 2026
Даешь бан Диего! лишь бы самому бан не получить
Anonymous #3585174 Уровень 33
27 августа 2025
Like
Дмитрий Уровень 6
4 июля 2025
Блин, всю голову сломал над OurPresident, прежде чем увидел что этот класс в отдельном файле уже есть 😨. Пора отвлечься.
17 января 2025
Всем привет! Не могу дотумкать что не так в моих решениях в последних двух задачах Подскажите/намекните плз )

    public static class OurPresident {
        private static OurPresident president;

        private OurPresident() {
        }
        static {
            synchronized (OurPresident.class) {
                president = new OurPresident();
            }
        }
        
        public static OurPresident getOurPresident() {
            return president;
        }
    }
Метод getFund() должен содержать синхронизированный блок. - но блок есть .. Внутри синхронизированного блока должно быть проинициализировано поле imf. - но поле проинициализировано ... и

    public static class IMF {
        private static IMF imf;
        private IMF() {
        }
        
        public static IMF getFund() {
            synchronized (IMF.class) {
                imf = new IMF();
            }
            return imf;
        }
    }
Класс OurPresident должен содержать статический блок. - класс содержит блок ... Внутри статического блока класса OurPresident должен быть синхронизированный блок. - блок присутствует ... Внутри синхронизированного блока должно быть проинициализировано поле president. - поле проинициализировано ... Заранее спасибо!
21 января 2025
Привет, в обоих случаях нужно присваивать полям значения единожды (только если поле = null). Иначе ничего делать не нужно.
Hack Уровень 32
3 мая 2025
прочитай про double check и все станет понятно
ВК Уровень 38
10 декабря 2024
Поною на валидатор. Задача "Синхронизированный президент". Мой код:

public class OurPresident {
    private static OurPresident president;
    private static Boolean b;
    
    static {
        synchronized(b) {
            president = new OurPresident();
        }        
    }

    private OurPresident() {
    }

    public static OurPresident getOurPresident() {
        return president;
    }
}
Мой код удовлетворяет всем озвученным требованиям задачи, значит его или следовало принять, или сказать, какой именно объект предлагается использовать в качестве мьютексного.
25 февраля 2025
ты забыл добавить проверку на null
Viacheslav Уровень 22
1 ноября 2024
Не понимаю, какой объект надо передавать в блок synchronized в этом примере? Почему именно notes? Если я передам туда this ничего же не изменится. Вообще зачем в этот блок что-то передавать, какой в этом смысл? Поток заходит в блок, остальные ждут - тут все ясно. Зачем объект передавать?

public void addNote(int index, String note) {
    System.out.println("Сейчас будет добавлена заметка [" + note + "] На позицию " + index);
    synchronized (notes) {
        notes.add(index, note);
    }
    System.out.println("Уже добавлена заметка [" + note + "]");
}
Віктор Уровень 17
2 ноября 2024
насколько я понимаю проблема будет в том что массив notes объявлен как финальный и будет один и тем же для всех this (объектов). Поэтому если будет доступ с разных потоков то практически будет добавлятся и удаляться элементы с одними и теми же индесами что будет приводить к оибкам а когда мы блокируем сам массив, то сначала один поток сможет добавить или удалить, а затем только лишь другой что будет корректно увеличивать или уменьшать наш массив
Jsuccess Уровень 30
30 ноября 2024
Фактически, ты можешь и синхронизировать объект this, можешь вообще полностью синхронизировать метод, разница будет невелика, поэтому любой из этих вариантов правилен.