#懒汉式,线程安全
public class Singleton{
private static Singleton instance;
private Singleton(){}
public static synchronized Singleton getInstance(){
if (instance == null){
instance = new Singleton();
}
return instance;
}
}
#优点:第一次调用才初始化,避免内存浪费。
#缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。
#饿汉式
public class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
#双检锁/双重校验锁
public class Singleton{
private volatile static Singleton singleton;
private Singleton(){}
public static Singleton getSingleton(){
if (singleton==null){
synchronized (Singleton.class){
if (single == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}