Назад к вопросам
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;
}
}