单例模式是指确保一个类在任何情况下只有一个绝对实例,并提供一个全局访问点。单例模式是创建型模式。ServletContext,ServletContextConfig,ApplicationContext,数据库连接池等都是单列模式。
1.声明静态私有类变量,且立即实例化;2.私有构造方法;3.提供全局访问点;
饿汉式单例:
在类加载的时候就进行初始化,并创建单例对象,因为在线程还没出现以前就实例化了,是线程安全的。但是因为所有对象类加载的时候就实例化,如果系统存在大量的单利对象,那么会导致大量的内存浪费。
懒汉式单列:
解决饿汉式单利带来的内存浪费问题,单利对象在被使用的时候才会初始化。但是会造成线程安全问题,在全局访问点getInstance()方法上加上synchronized关键字,是这个方法变成线程同步方法即可解决。
但是在大批量的线程访问的时候会造成线程阻塞,导致程序性能下降。解决方法在方法内部双重判断私有变量是否为空,在加锁。