单例模式大家应该看得够多了
双锁, 静态内部类….太多太复杂
我这里介绍一种最终解决办法, 你应该很少见过, 但是最优雅
public enum SingletonClazz {INSTANCE;SingletonClazz(){System.out.println("实例被初始化");}}
- 懒加载
- 没有多线程竞争问题
- 代码简洁
验证一下
public class App {public static void main(String[] args) {System.out.println("调用枚举实现的单例之前");SingletonClazz s1 = SingletonClazz.INSTANCE;SingletonClazz s2 = SingletonClazz.INSTANCE;System.out.println(s1 == s2);}}
输出结果:
截图



