Junior — Middle
76
Какие свойства и поведение имеет ключевое слово synchronized в языке программирования Java?
Компании, где спрашивали
Ответ от нейросети
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 несколькими потоками.