На каком объекте происходит синхронизация статического метода с ключевым словом synchronized

«На каком объекте происходит синхронизация статического метода с ключевым словом synchronized» — вопрос из категории Многопоточность, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

class MyClass {
    public static synchronized void staticMethod() {
        // Критическая секция
    }
}

Эквивалентно:

class MyClass {
    public static void staticMethod() {
        synchronized (MyClass.class) {
            // Критическая секция
        }
    }
}