单例模式大家应该看得够多了
双锁, 静态内部类….太多太复杂

我这里介绍一种最终解决办法, 你应该很少见过, 但是最优雅

  1. public enum SingletonClazz {
  2. INSTANCE;
  3. SingletonClazz(){
  4. System.out.println("实例被初始化");
  5. }
  6. }
  • 懒加载
  • 没有多线程竞争问题
  • 代码简洁

验证一下

  1. public class App {
  2. public static void main(String[] args) {
  3. System.out.println("调用枚举实现的单例之前");
  4. SingletonClazz s1 = SingletonClazz.INSTANCE;
  5. SingletonClazz s2 = SingletonClazz.INSTANCE;
  6. System.out.println(s1 == s2);
  7. }
  8. }

输出结果:
image.png

截图

image.png

image.png
image.png