首页 > 其他 > 详细

单例模式

时间:2021-08-23 11:05:55      阅读:23      评论:0      收藏:0      [点我收藏+]
  • 饿汉式:可能会造成一定空间的浪费
    • 技术分享图片

       

       

  • 懒汉式:DCL懒汉式+原子性操作
    • package single;
      
      /**
       * @author : lijie
       * @Description: 懒汉式单例
       * @date Date : 2021年08月23日 8:45
       */
      
      public class Hungry {
      
        private Hungry() {
          System.out.println(Thread.currentThread().getName()+"--OK");
        }
      
        private volatile static Hungry hungry;
      
        // 双重锁检测机制的  懒汉式单例   DCL懒汉式
        public static Hungry getInstance() {
          if (hungry == null) {
            synchronized (Hungry.class) {
              if (hungry == null) {
                // 不是一个原子性的操作
                // 1.分配内存空间
                // 2.执行构造方法,初始化对象
                // 3.把这个对象指向这个空间
                // 有可能123或者132     所以要采用volatile禁止指令重排
                hungry = new Hungry();
              }
            }
          }
          return hungry;
        }
      
        public static void main(String[] args) {
          for (int i = 0; i < 10; i++) {
            new Thread(()->Hungry.getInstance()).start();
          }
        }
      }

       

        技术分享图片

       

  • 静态内部类
    •   技术分享图片

       

       

  • 枚举:只 有枚举是安全的,其他的形式都会被反射进行干扰
    •   技术分享图片

       

       

单例模式

原文:https://www.cnblogs.com/codehero/p/15174426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!