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

Какие знаешь реализации Singleton

В Java есть несколько способов реализации Singleton:

  1. Eager Initialization – создание экземпляра при загрузке класса.

    java
    public class Singleton {
        private static final Singleton INSTANCE = new Singleton();
        private Singleton() {}
        public static Singleton getInstance() { return INSTANCE; }
    }
  2. Lazy Initialization – создание экземпляра при первом вызове.

    java
    public class Singleton {
        private static Singleton instance;
        private Singleton() {}
        public static synchronized Singleton getInstance() {
            if (instance == null) instance = new Singleton();
            return instance;
        }
    }
  1. Double-Checked Locking – оптимизация ленивой инициализации с volatile.

    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;
        }
    }
  2. Enum Singleton – потокобезопасный и сериализуемый вариант.

    java
    public enum Singleton {
        INSTANCE;
        public void doSomething() {}
    }

Выбор зависит от требований к ленивости, потокобезопасности и сериализации.

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

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

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

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