Назад к вопросам
Middle
78
questionbank

Что такое шаблон проектирования Singleton с использованием двойной проверки блокировки?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Шаблон Singleton гарантирует создание только одного экземпляра класса и предоставляет глобальную точку доступа к нему. Двойная проверка блокировки (Double-Checked Locking) — это оптимизация для ленивой инициализации Singleton в многопоточной среде.

public class Singleton {

    private static volatile Singleton instance; // 'volatile' гарантирует видимость изменений во всех потоках

    private Singleton() {
        // Приватный конструктор для предотвращения прямого создания экземпляров
    }

    public static Singleton getInstance() {
        if (instance == null) { // Первая проверка: нет необходимости в синхронизации, если объект уже создан
            synchronized (Singleton.class) { // Блокировка по объекту класса
                if (instance == null) { // Вторая проверка: предотвращает создание нескольких экземпляров, если несколько потоков прошли первую проверку
                    instance = new Singleton(); // Инициализация экземпляра
                }
            }
        }
        return instance;
    }
}