下面是自己以前理解的单例模式
public class Single { private static Single single=new Single(); public static Single getInstance(){ return single; } }这种模式不能保证线程是安全的,而且没用用的时候已经创建了一个实例,增加了内存的开销
下面这种是别人的写的这种模式,第一次加载的时候并不会初始化,只有第一次调用的时候才会初始化,这种方式能保证线程安全,也能保证单例对象的唯一性,一开始没看太懂,最后考虑了,他是因为声明了一个final的对象,final声明的对象不能修改
public class Single { public static Single getInstance(){ return Single1.single; } public static class Single1{ private static final Single single=new Single(); } }