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

Что такое DCL

DCL (Double-Checked Locking) — это шаблон проектирования для ленивой инициализации синглтона, который минимизирует накладные расходы на синхронизацию. Основная идея — проверять блокировку только при первом создании объекта.

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;
    }
}

Ключевые моменты:

  1. volatile обязательно — предотвращает проблему частичной инициализации из-за переупорядочивания инструкций
  2. Первая проверка позволяет избежать блокировки при каждом вызове
  3. Вторая проверка гарантирует единственность экземпляра

Используется редко в современных Java-приложениях, так как есть более простые альтернативы (enum-синглтоны, Holder pattern).

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

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

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

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