一、饿汉写法(即一开始就加载)
private static CustomManager customManager=new CustomManager();
private CustomManager(){}
public static CustomManager getInstance()
{
return customManager;
}
二、懒汉写法(即在需要时才加载),加synchronized是为了避免有两个线程同时执行这个方法时,new出两个对象。
private static CustomManager customManager=null;
private CustomManager(){}
public static synchronized CustomManager getInstance()
{
if(customManager==null){
customManager=new CustomManager();
}
return customManager;
}
使用场景
类中没有可以修改的成员变量(这个类没有状态),如果存在可以修改的成员变量会产生线程安全问题,除非加上synchronized 关键字,不建议使用,单例模式无法继承,所以无法扩展,无法更改它的实现。如果读取配置文件比较适合使用单例。