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

В чем разница между синхронизацией метода и синхронизацией на конкретном объекте

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

Пример:

java
// Синхронизация метода
public synchronized void method() { 
    // блокирует this
}

// Синхронизация на объекте
private final Object lock = new Object();
public void method() {
    synchronized(lock) { // блокирует только lock
        // ...
    }
}

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

  1. Гибкость - можно использовать разные объекты для разных участков кода
  2. Производительность - точечная синхронизация уменьшает contention
  3. Безопасность - внешний код не может заблокировать ваш монитор
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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