单例模式
private Singleton(){};
private static Singleton instance = new Singleton();
public static Singleton getInstance(){ return instance; }
通过将构造函数设为private,并定义一个静态的实例,在需要的时候创建该实例
懒汉模式
private Singleton(){};
private static Singleton instance;
public static Singleton getInstance(){
if(instance == null){
sychronized(Singleton.class){
if(instance == null)
instance = new Singleton();
}
}
}return instance;
ThreadLocal
private Singleton(){};
private static final ThreadLocal<Singleton> Singleton = new ThreadLocal<>(){
@Override
protected Singleton initialValue(){
return new Singleton();
}
}
public static Singleton getInstance(){
return Singleton
}
ThreadLocal会为每一个线程提供一个独立的变量副本