Встречается на собеседованиях • сегодня
Что такое Double-Checked Locking
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;
}
}Ключевые моменты:
volatileобязательно для корректной работы (без него возможна публикация частично инициализированного объекта)- Первая проверка позволяет избежать блокировки, если объект уже создан
- Вторая проверка гарантирует, что только один поток создаст экземпляр
Без volatile возможна ситуация, когда один поток увидит не до конца инициализированный объект.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы