Sobes.tech
Назад к вопросам
Junior — Middle
66

Объясните, как работает ключевое слово synchronized в Java и в чем его смысл при работе с потоками

Ответ от нейросети

sobes.tech AI

Ключевое слово synchronized в Java используется для организации взаимного исключения при работе с потоками. Оно гарантирует, что в один момент времени только один поток может выполнять блок кода или метод, помеченный этим ключевым словом, для одного и того же объекта-монитора.

Когда поток входит в synchronized-блок или synchronized-метод, он захватывает монитор объекта (указанный в synchronized-блоке или this для метода). Другие потоки, пытающиеся войти в такой же synchronized-блок или метод с тем же монитором, будут блокированы до тех пор, пока первый поток не выйдет из блока и не освободит монитор.

Это предотвращает состояния гонки и обеспечивает корректный доступ к общим ресурсам.

Пример:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

В этом примере методы increment и getCount синхронизированы, поэтому изменения и чтения переменной count будут потокобезопасными.