单例模式的实现

单例模式实现的六种方法

1懒汉模式

获取时判断是否为null,然后创建

可能会出现线程安全问题,所以对他加上Synchronize

2.Synchronize修饰的get方法

速度会很慢,通过双重校验锁法来实现

3.双重校验锁法

在get方法中,先判断是否为null,为空则加一个Synchronize代码块,里面还需要再判断一次,因为可能有多个线程同时阻塞在了这里,当第一个创建好后,没有判断的话还会创建其他的。

实例需要添加volatile修饰符 禁止指令重排序保证线程安全

4.饿汉模式

直接在定义的时候就实现

5.静态内部类

定义一个静态内部类

通过一个方法返回该内部类

实现了懒加载

6.枚举类实现

https://cloud.tencent.com/developer/article/1497592