• 8 线程安全且高效的单例模式


    (1)双检查

      if(instance == null){//一次检查                                   

        synchronized (MySingleton.class) {

        if(instance == null){//二次检查                         

          instance = new MySingleton();                     

        }                 

      }             

     (2)静态代码块

      private static MySingleton instance = null;  

      private MySingleton(){}

      static{         

        instance = new MySingleton();     

      }

      public static MySingleton getInstance() {  

        return instance;     

      }

    (3)静态内置类

      private static class MySingletonHandler{          

        private static MySingleton instance = new MySingleton();  

      

      private MySingleton(){}

      public static MySingleton getInstance() {  

        return MySingletonHandler.instance;  

      }  

    (4)枚举类型

      public enum EnumFactory{            

        singletonFactory;

        private MySingleton instance; private EnumFactory(){//枚举类的构造方法在类加载是被实例化         

          instance = new MySingleton();     

        }      

        public MySingleton getInstance(){  

          return instance;  

        }  

      }  

      class MySingleton{//需要获实现单例的类,比如数据库连接Connection  

        public MySingleton(){}   

      }  

  • 相关阅读:
    Codeforces 723d [暴力dfs]
    Codeforces 723e [图论][欧拉回路]
    Hihocoder 1035 [树形dp]
    Codeforces 721C [dp][拓扑排序]
    Codeforces 721D [贪心]
    info
    关于string操作
    Floyd求最小环 HDU1599
    Codeforces Round #572 (Div. 2) B Number Circle
    A. XXXXX
  • 原文地址:https://www.cnblogs.com/JaneSJ/p/5915291.html
Copyright © 2020-2023  润新知