Sobes.tech
Junior — Middle
75

Какие свойства и поведение имеет ключевое слово synchronized в языке программирования Java?

Companies where asked
Альфа-БанкАльфа-Банк

Answer from AI

sobes.tech AI

Ключевое слово synchronized в Java используется для управления доступом к разделяемым ресурсам в многопоточной среде. Оно обеспечивает взаимное исключение (mutex), позволяя только одному потоку выполнять синхронизированный блок кода или метод в конкретный момент времени.

Основные свойства и поведение:

  • Монитор (lock): При входе в synchronized-блок или метод поток захватывает монитор объекта (если метод нестатический — объекта, у которого вызывается метод; если статический — класса).
  • Взаимное исключение: Другие потоки, пытающиеся войти в synchronized-блок с тем же монитором, будут заблокированы до освобождения монитора.
  • Гарантия видимости: Изменения, сделанные внутри synchronized-блока, становятся видимыми другим потокам после выхода из блока (за счет memory barrier).
  • Можно синхронизировать методы или блоки:
    • Синхронизированный метод: public synchronized void method() { ... }
    • Синхронизированный блок: synchronized(obj) { ... }

Пример:

public class Counter {
    private int count = 0;

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

    public int getCount() {
        return count;
    }
}

В этом примере метод increment синхронизирован, что предотвращает одновременное изменение переменной count несколькими потоками.