饿汉式
public class Singleton {
private Singleton(){}
private static final Singleton INSTANCE = new Singleton();;
public static Singleton getInstance() {
return INSTANCE;
}
}
懒汉式之一 : double check lock
public class Singleton {
private Singleton(){}
private static Singleton instance;
public static Singleton getInstance() {
if(instance==null){ //step1
synchronized (Singleton.class) {
if(instance==null){ //step2
instance = new Singleton();
}
}
}
return instance;
}
}
懒汉式之二 : 内部类实现,其实也有饿汉式的影子
public class Singleton {
private Singleton() {}
private static class InnerSingleton{
private static final Singleton INSTANCE = new Singleton();
}
public static final Singleton getInstance() {
return InnerSingleton.INSTANCE;
}
}