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

В чем разница между synchronized методом и synchronized блоком

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

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

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

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

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

Ключевые отличия:

  1. Блок более гибкий - можно синхронизироваться на любом объекте, не только на this
  2. Блок позволяет уменьшить область синхронизации (только критическую секцию)
  3. Для статических методов синхронизация происходит на уровне класса (Class object)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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