Это образец базового шаблона, который я использовал для 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+?