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

В чем разница между Eager и Lazy Singleton

Eager Singleton создается при загрузке класса, что гарантирует его доступность, но может привести к избыточному использованию ресурсов, если экземпляр не используется.

Lazy Singleton создается только при первом вызове метода получения экземпляра, что экономит ресурсы, но требует синхронизации в многопоточной среде.

Eager Singleton:

java
public class EagerSingleton {
    private static final EagerSingleton INSTANCE = new EagerSingleton();
    
    private EagerSingleton() {}
    
    public static EagerSingleton getInstance() {
        return INSTANCE;
    }
}

Lazy Singleton (потокобезопасный):

java
public class LazySingleton {
    private static volatile LazySingleton instance;
    
    private LazySingleton() {}
    
    public static LazySingleton getInstance() {
        if (instance == null) {
            synchronized (LazySingleton.class) {
                if (instance == null) {
                    instance = new LazySingleton();
                }
            }
        }
        return instance;
    }
}

Eager проще, но менее гибок, Lazy эффективнее, но сложнее в реализации.

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

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

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

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