懒汉模式:延迟加载,只有在真正使用的时候才开始实例化。
但是懒汉模式可能会存在以下问题:
- 线程安全问题
- 加锁优化
- 编译器(JIT)、CPU有可能对指令进行重排序,导致使用到尚未初始化的实例,可以通过添加volatile关键字进行修饰,volatile可以防止指令重排序
下面上代码
/*** @author xzf* @create 2021-02-08 8:40*/public class LazySingleton {private volatile static LazySingleton instance = null;private LazySingleton(){}public static LazySingleton getInstance(){if (instance == null) {synchronized (LazySingleton.class){if(instance == null){instance = new LazySingleton();}}}return instance;}}
