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

На что синхронизируешься при добавлении synchronized на метод

При добавлении synchronized к методу, синхронизация происходит на объекте, которому принадлежит метод (для нестатических методов) или на объекте класса Class (для статических методов).

Пример:

java
public class Counter {
    private int count = 0;
    
    // Синхронизация на экземпляре Counter
    public synchronized void increment() {
        count++;
    }
    
    // Синхронизация на объекте Class (Counter.class)
    public static synchronized void staticMethod() {
        // логика
    }
}

Нюансы:

  • Для нестатических методов блокируется экземпляр объекта (this).
  • Для статических методов блокируется класс (Counter.class).
  • Синхронизация на методе эквивалентна синхронизации на объекте в теле метода:
    java
    public void increment() {
        synchronized(this) {
            count++;
        }
    }
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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