zoukankan      html  css  js  c++  java
  • 单例模式

    1分类

      常见的单例设计模式有饿汉式、懒汉式、同步懒汉式、双重锁 校验懒汉式、静态内部类饿汉式 

    2代码

      1饿汉式                    

      优点:线程安全,效率较高                    

      缺点:不支持懒加载                    

      总结:开发中推荐使用

        public class Singleton {

            private static Singleton instance = new Singleton();

            private Singleton (){}

            public static Singleton getInstance() {

                return instance;

            }

        }

      2懒汉式

      优点:支持懒加载                    

      缺点:线程不安全、效率低                    

      总结 :开发中不推荐使用

        public class Singleton {

            private static Singleton instance;

            private Singleton (){}

            public static Singleton getInstance() {

                if (instance == null) {

                    instance = new Singleton();

                }

                return instance;

            }

        }

      3同步懒汉式                    

      优点:线程安全,支持懒加载                    

      缺点:效率低下                    

      总结:解决了普通懒汉式的线程不安全问题,不推荐。                    

      public class Singleton {

           private static Singleton instance;

           private Singleton (){}

              public static synchronized Singleton getInstance() {

                if (instance == null) {

                    instance = new Singleton();

                }

                return instance;

            }

      }

      4双重锁校验懒汉式                    

      优点:线程安全,支持懒加载,效率高。                    

      总结:开发中推荐使用。                     

      public class Singleton {

          private volatile static Singleton singleton;

          private Singleton (){}

          public static Singleton getSingleton() {

              if (singleton == null) {

                   synchronized (Singleton.class) {

                     if (singleton == null) {

                          singleton = new Singleton();

                     }

                 }

              }

            return singleton;

         }

      5静态内部类饿汉式     

      优点:线程安全,支持懒加载,效率高。                    

      总结:开发中推荐使用。           

      public class Singleton {

           private static class SingletonHolder {

               private static final Singleton INSTANCE = new Singleton();

           }

           private Singleton (){}

           public static final Singleton getInstance() {

               return SingletonHolder.INSTANCE;

           }

      }

    3.总结

      在开发中,推荐大家使用饿汉式、双重锁校验懒汉式、静态内部类饿汉式。但是以上三种单例设计模式,依然存在致命缺陷,至于是什么缺陷,请关注软谋公众号,相关问题我们将在下一期文章中给出解决方案

     

  • 相关阅读:
    微服务之初识微服务
    常见的认证机制及JSON WEB TOKEN
    深入理解缓存之缓存预热与淘汰策略
    深入理解缓存之缓存和数据库的一致性
    深入理解缓存之缓存存在的问题及应对措施
    深入理解缓存之常见的缓存算法
    计算机网络之HTTP、HTTPS、HTTP2
    计算机网络之TCP(三次握手、四次挥手等),UDP及DNS
    计算机网络之网络体系架构与IP
    深入理解MyBatis(四)--缓存
  • 原文地址:https://www.cnblogs.com/sunBinary/p/9828543.html
Copyright © 2011-2022 走看看