1.懒汉式,线程不安全
pubblic class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
instance=new Singleton();
}
return instance;
}
}
2.懒汉式,线程安全
public class Singleton{
private static Singleton instance;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance=new Singleton();
}
return instance;
}
}
3.饿汉式
public class Singleton{
private static Singleton instance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
4.双检锁(DCL)
public class Singleton{
private volatile static Singleton singleton;
private singleton(){}
public static Singleton getSingleton(){
if(singleton==null){
synchorinze(singleton.class){
if(singleton==null){
singleton=new singleton();
}
}
return singleton;
}
5.登记式/静态内部类
public class Singleton{
private static class SingletonHolder{
private static final Singleton INSTANCE=new Singleton();
}
private Singleton(){}
public static final Singleton getInstance(){
return SingletonHolder.Instance;}
}