volatile关键字的双重校验锁写法
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
静态内部类写法
publlic class Singleton {
private Singleton() {}
private static class SingletonLoader {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonLoader.INSTANCE;
}
}