单例模式

127 阅读1分钟

饿汉式

静态变量


public class Singleton {

    private final static Singleton INSTANCE = new Singleton();

    private Singleton(){}

    public static Singleton getInstance(){
        return INSTANCE;
    }
}

懒汉式

调用的时候才创建


private Singleton(){


}

private static Singleton singleton;


public static Singleton getSingleInstance(){

if(singleton==null){

singleton=new Singleton();

}
return singleton;

}

}

线程安全

public class Singleton {

private static Singleton singleton;

private Singleton() {}

public static Singleton getInstance() {
    if (singleton == null) {
        synchronized (Singleton.class) {
            singleton = new Singleton();
        }
    }
    return singleton;
}

}



双重校验


public class Singleton {

    private static volatile Singleton singleton;

    private Singleton() {}

    public static Singleton getInstance() {
        if (singleton == null) {
            synchronized (Singleton.class) {
                if (singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}