Java设计模式之单例模式
- 懒汉式(线程不安全)
private static Singleton instance;
//私有化构造方法
private Singleton(){}
public static Singleton getInstance() {
if(instance == null){
instance = new Singleton();
}
return instance;
}
- 懒汉式(线程安全)
private static Singleton instance;
private Singleton(){}
//加入锁,会导致效率较低
public static synchronized Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
- 饿汉式(线程安全)
//类加载时就会初始化,造成内存的浪费
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance() {
return instance;
}
- 双重校验锁(线程安全)
private volatile static Singleton instance;
private Singleton(){}
//综合性能高,写起来较麻烦
public static Singleton getInstance() {
if(instance == null){
synchronized (Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
- 静态内部类(线程安全)
private static class SingletonHolder{
private static final Singleton INSTANCE = new Singleton();
}
private Singleton(){}
public static final Singleton getInstance(){
return SingletonHolder.INSTANCE;
}
- 枚举(线程安全)
public enum SingleTon{
INSTANCE;
}
具体代码地址:
https://github.com/IWillBeABigGod/DesignPattern/blob/master/src/SinglePattern/Singleton.java