什么叫单例模式?
单例模式涉及到一个单一的类,该类负责创建自己的对象,并且确保只有单个对象被创建,这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该对象。
单例模式分类为两种:
饿汉式:类加载就会导致该实例对象被创建。
懒汉式:类加载不会导致实例对象的创建,首次使用时才会创建
饿汉式:
懒汉式:
上面这种方式在多个线程并行时,可能会创建出多个对象,例如:线程1进入执行到if(intance = null)还没有return时,线程2也执行到这一步,这个时间由于线程1并没有return,所以此时intance还是null,那么线程2也会创建一个对象。
解决方法:在public static 后加上同步关键字(synchronized),代码如下:
双重检查锁模式
我们还可以对上述项目进行优化,那就是双重检查锁模式。