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

Помнишь ли как работать с synchronized

synchronized в Java используется для синхронизации доступа к общим ресурсам в многопоточной среде. Он может применяться к методам или блокам кода.

Синхронизированный метод:

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

Весь метод блокируется на объекте, которому принадлежит метод (для статических методов — на классе).

Синхронизированный блок:

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

Блокируется только указанный блок кода на указанном объекте (в примере — this).

Особенности:

  • Гарантирует видимость изменений между потоками (happens-before)
  • Может вызывать contention (конкуренцию) при высокой нагрузке
  • Альтернативы в современных Java — ReentrantLock, StampedLock, атомарные классы

Пример deadlock:

java
// Поток 1
synchronized(a) {
    synchronized(b) { ... }
}

// Поток 2
synchronized(b) {
    synchronized(a) { ... }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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