Встречается на собеседованиях • сегодня
Как Singleton связан с многопоточностью
Singleton может создавать проблемы в многопоточности, если не реализован потокобезопасно. При одновременном обращении нескольких потоков к методу получения экземпляра может возникнуть race condition, приводящий к созданию нескольких экземпляров.
Потокобезопасные реализации:
- Eager Initialization (создание при загрузке класса):
java
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return INSTANCE;
}
}- 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;
}
}- Enum Singleton (рекомендуемый способ, потокобезопасен от природы):
java
public enum Singleton {
INSTANCE;
}Важно избегать синхронизации всего метода getInstance() из-за снижения производительности.

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