1. 懒汉
缺点:线程不安全
public class SingletonInstanceLazy {
private SingletonInstanceLazy (){
}
private static SingletonInstanceLazy singletonInstanceLazy;
public static SingletonInstanceLazy getInstance(){
if(singletonInstanceLazy == null){
singletonInstanceLazy = new SingletonInstanceLazy();
}
return singletonInstanceLazy;
}
}
2. 饿汉
优点:线程安全
缺点:项目初始化会慢
public class SingletonInstanceHungry {
private SingletonInstanceHungry(){
}
private static SingletonInstanceHungry singletonInstanceHungry = new SingletonInstanceHungry();
public static SingletonInstanceHungry getInstance(){
return singletonInstanceHungry;
}
}
3. 双重检查锁
优点:线程安全
public class SingletonInstanceDoubleCheck {
private SingletonInstanceDoubleCheck(){
}
private static volatile SingletonInstanceDoubleCheck singletonInstanceDoubleCheck;
public static SingletonInstanceDoubleCheck getInstance(){
if(singletonInstanceDoubleCheck == null){
synchronized (singletonInstanceDoubleCheck){
if(singletonInstanceDoubleCheck == null){
singletonInstanceDoubleCheck = new SingletonInstanceDoubleCheck();
}
}
}
return singletonInstanceDoubleCheck;
}
}
4. 静态内部类
优点:线程安全,也不用提前加载
public class SingletonInstanceStaticInnerClass {
private SingletonInstanceStaticInnerClass(){
}
private static class InnerClass{
private static final SingletonInstanceStaticInnerClass INSTANCE = new SingletonInstanceStaticInnerClass();
}
public SingletonInstanceStaticInnerClass getInstance(){
return InnerClass.INSTANCE;
}
}
5. 枚举
优点:线程安全
public enum SingletonInstanceEnum {
INSTANCE;
}
458

被折叠的 条评论
为什么被折叠?



