public class UserService {
private UserService userService = null;
private UserService() {}
public static UserService getInstance() {
if(userService == null) {
synchronized(UserService.class) {
if(userService == null) {userService = new UserService();}
}
}
return userService;
}
}
private UserService userService = null;
private UserService() {}
public static UserService getInstance() {
if(userService == null) {
synchronized(UserService.class) {
if(userService == null) {userService = new UserService();}
}
}
return userService;
}
}
更簡單的單例實現可以用 enum
public enum Singleton {
INSTANCE;
public void otherMethod(){
// do something
}
}
private UserService(){}
private static class SingletonHolder {
final static UserService instance = new UserService();
}
public static UserService getInstance() {
return SingletonHolder.instance;
}
}
典型的Double-Checked Lock,典型的不完美
拜托,發貼前看點資料。
這里面詳細討論了這段代碼
private static UserService userService = null;
更好點。
private static UserService userService = null;
http://www.csufox.com/singleton.html