public class Singleton {
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
//懒汉式,线程安全
//可lazy加载,但是效率低下
public class Singleton {
private static Singleton instance;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
//双重检验
//线程安全,可lazy加载,推荐使用
public class Singleton {
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized (Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
//双重检验
//线程安全,不可lazy加载
//缺点浪费资源
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
//线程安全,可lazy加载,书写方便
public class Singleton {
private Singleton(){}
private static class SingletonInstance{
private final static Singleton instance = new Singleton();
}
public final static Singleton getInstance(){
return SingletonInstance.instance;
}
}