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)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
27 февраля 2026
Как будто бы и не сложно особо
C0N5P1RACY Уровень 41
4 февраля 2026
Даешь бан Диего! лишь бы самому бан не получить
Anonymous #3585174 Уровень 33
27 августа 2025
Like
Дмитрий Уровень 16
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 и все станет понятно
ВК Уровень 36
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, можешь вообще полностью синхронизировать метод, разница будет невелика, поэтому любой из этих вариантов правилен.
{Java_Shark} Уровень 36
30 октября 2024
++
Леонид Уровень 1
10 августа 2024
Мьютексы (или мьютексы, от английского "mutex" — "mutual exclusion") в Java используются для управления доступом к общим ресурсам между несколькими потоками. Подумай о мьютексе как о замке на ресурсе. Когда один поток "закрывает" замок (или "захватывает" мьютекс), другие потоки не могут получить доступ к этому ресурсу, пока замок не будет "открыт" (или "освобожден"). Простой пример: Представь, что у тебя есть один стол с одним компьютером, и несколько человек хотят использовать его одновременно. Чтобы избежать конфликтов и путаницы, ты устанавливаешь расписание или правила, чтобы только один человек мог пользоваться компьютером в любой момент времени. Мьютекс в этом случае — это правило, которое обеспечивает, чтобы только один человек мог использовать компьютер в одно время.

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;  // Этот метод будет выполняться только одним потоком за раз
    }

    public synchronized int getCount() {
        return count;  // Этот метод тоже будет выполняться только одним потоком за раз
    }
}

В этом примере: Метод increment и метод getCount синхронизированы. Это значит, что если один поток выполняет increment, другой поток не может одновременно выполнять этот метод или getCount до тех пор, пока первый поток не завершит выполнение и не освободит замок.
David Dzhikia Уровень 29 Expert
6 июня 2024
Как по маслу проехался, даже глазом не моргнул! Рекомендую подробнее знакомиться с каждой темой, смотреть на ютубе уроки к примеру. Так все будет понятней, а задачи будут приносить удовольствие, вместо ощущения своей неполноценности.