双重检查加锁
public class Singleton {
private volatile static Singleton uniqueSingleton;
private Singleton(){
}
public Singleton getSingleton(){
if(uniqueSingleton == null){
synchronized (Singleton.class) {
if(uniqueSingleton == null){
uniqueSingleton = new Singleton();
}
}
}
return uniqueSingleton;
}
}
静态内部类方式
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}