饿汉式 懒汉式 双重检查锁 静态内部类 枚举
- 双重检查锁
public class singleton{
private singleton(){}
private static volatile Singleton singleton;
public static Singleton getInstance(){
if (null == singleton){
synchronized(Singleton.class){
if(null == singleton){
singleton=new Singleton();
}
}
}
}
}
- 静态内部类
public class Singleton{
private Singleton(){}
private static class SingletonFactory{
private static Singleton singleton=new Singleton();
}
public static Singleton getInstance(){
return SingletonFactory.singleton;
}
}
- 枚举类
public enum Singleton{
INSTANCE;
public Singleton getInstance(){
return INSTANCE;
}
}