1.懒汉模式
public class Singleton{
private static Singleton instance;private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
2.双重校验锁 Double Check Lock(DCL模式)
public class Singleton{
private volatile static Singleton sInstance = null;
private Singleton(){};
public static Singleton getInstance(){
if(sInstance==null){
Synchronized(Singleton.class){
if(sInstance==null){
sInstance = new Singleton();
}
}
}
return sInstance;
}
}
3.静态内部类单例模式
public class Singleton{
private Singleton(){}
public static Singleton getInstance(){
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder{
private static final Singleton INSTANCE = new Singleton();
}
}
3这种模式不但能够确保线程安全,还能够保证单例的唯一性,同时也延迟了单例的实例化,推荐模式