zoukankan      html  css  js  c++  java
  • 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(){}   

      }  

  • 相关阅读:
    [译] 我最终是怎么玩转了 Vue 的作用域插槽
    通俗易懂的Git使用入门教程
    JS取出两个数组的不同或相同元素
    jQuery中四种事件监听的区别
    vuex里mapState,mapGetters使用详解
    php 获取时间今天明天昨天时间戳
    Linux crontab定时执行任务
    php返回json数据函数实例_php技巧_脚本之家
    mysql查看表结构命令
    Mysql命令大全
  • 原文地址:https://www.cnblogs.com/JaneSJ/p/5915291.html
Copyright © 2011-2022 走看看