Это образец базового шаблона, который я использовал для Factory, который возвращает потокобезопасный синглтон:
public class UserServiceFactory {
private volatile static UserService userService;
private UserServiceFactory() { }
public static UserService getInstance() {
if (userService == null) {
synchronized(UserServiceImpl.class) {
if (userService == null) {
userService = new UserServiceImpl();
}
}
}
return userService;
}
}
Он использует как изменчивую, так и идиому двойной проверки, чтобы гарантировать, что создается единственный экземпляр и виден через потоки.
Есть ли менее подробный и / или менее затратный способ достижения той же цели в 1.6+?