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

Что такое DoubleCheck проверка

DoubleCheck (двойная проверка) — это паттерн для ленивой инициализации синглтона с потокобезопасностью.

java
public class Singleton {
    private static volatile Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) { // Первая проверка (без блокировки)
            synchronized (Singleton.class) {
                if (instance == null) { // Вторая проверка (с блокировкой)
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

Зачем?

  • Первая проверка (instance == null) ускоряет доступ, если объект уже создан.
  • synchronized блокирует только первый вызов.
  • volatile гарантирует видимость изменений между потоками.

Без volatile возможна частичная инициализация из-за переупорядочивания инструкций.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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