单例模式
- 基于volatile的单例模式
public class SafeDoubleCheckedLocking {
private volatile static Instance instance;
public static Instance getInstance() {
if(instance == null) {
synchronized(SafeDoubleCheckedLocking.class) {
if(instance == null)
instance = new Instance();
}
}
}
}
- 基于类初始化的单例
public class InstanceFactory {
private static class InstanceHolder {
public static Instance instance = new Instance()
}
public static Instance getInstance() {
return InstanceHolder.instance;
}
}