Встречается на собеседованиях • сегодня

Для чего нужна синхронизация

synchronized в Java обеспечивает синхронизацию доступа к блоку кода или методу, предотвращая race condition. Только один поток может выполнять synchronized-блок для одного объекта (монитора) в один момент времени.

Пример с методом:

java
public synchronized void increment() {
    counter++;
}

Пример с блоком:

java
public void increment() {
    synchronized(this) {
        counter++;
    }
}

Ключевые особенности:

  • Для статических методов монитором является Class-объект
  • Для нестатических - экземпляр объекта (this)
  • Гарантирует видимость изменений между потоками (happens-before)
  • Может вызывать contention при высокой нагрузке

Альтернативы в современных Java - ReentrantLock, StampedLock, атомарные классы из java.util.concurrent.atomic.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы