这阵子准备那啥了,再看看基础知识。
先上懒汉模式和饿汉模式:
1. 懒汉模式:
Class Singleton{
private static Singleton s;
private Singleton(){}
public static Singleton getInstance(){
if(s==null)
s=new Singleton();
return s;
}
}
延迟加载,线程不安全
2. 饿汉模式
Class Singleton{
private static Singleton s=new Singleton(); //最常用
private Singleton(){}
public static Singleton getInstance(){
return s;
}
}
非延迟加载,线程安全
个人比较喜欢饿汉模式,比较省事。当然还有其他几种方式,继续
3. 饿汉模式变体-静态式
Class Singleton{
private static Singleton s;
private Singleton(){}
static{
s=new Singleton();
}
public static Singleton getInstance(){
return s;
}
}
线程安全
4. 懒汉模式变体-静态式
Class Singleton{
private static Singleton s;
private Singleton(){}
private static class SingletonHolder
{
static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return s;
}
}
延迟记载,线程安全