单例模式的实现
单例模式实现的六种方法
1懒汉模式
获取时判断是否为null,然后创建
可能会出现线程安全问题,所以对他加上Synchronize
2.Synchronize修饰的get方法
速度会很慢,通过双重校验锁法来实现
3.双重校验锁法
在get方法中,先判断是否为null,为空则加一个Synchronize代码块,里面还需要再判断一次,因为可能有多个线程同时阻塞在了这里,当第一个创建好后,没有判断的话还会创建其他的。
实例需要添加volatile修饰符 禁止指令重排序保证线程安全
4.饿汉模式
直接在定义的时候就实现
5.静态内部类
定义一个静态内部类
通过一个方法返回该内部类
实现了懒加载