Встречается на собеседованиях • сегодня
Может ли Singleton бин иметь два экземпляра
Да, Singleton может иметь несколько экземпляров в определенных случаях:
- Многопоточность - без синхронизации несколько потоков могут создать свои экземпляры. Решение - использовать
synchronizedили статическую инициализацию:
java
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return INSTANCE;
}
}-
Класслоадеры - разные класслоадеры загружают разные экземпляры класса.
-
Сериализация - после десериализации создается новый объект. Решение - реализовать
readResolve():
java
protected Object readResolve() {
return getInstance();
}- Рефлексия - можно обойти приватный конструктор. Решение - бросать исключение при попытке создать второй экземпляр.

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