zoukankan      html  css  js  c++  java
  • 四种获取单例的方式

    项目中经常会用到单例模式,这里总结一下

    1饿汉式

    public class Singleton  {
        //饿汉式
        private Singleton(){
            
        }
        private static Singleton singleton = new Singleton();
        public static Singleton getInstance(){
            return singleton;
        }
        
    }

    2懒汉式 线程安全的

    public class Singleton {
        //懒汉式
        private Singleton(){
            
        }
        private static Singleton singleton = null;
        
        public static synchronized  Singleton getInstance(){
            if(singleton==null){
                return new Singleton();
            }
            return singleton;
        }
    
    }

    3双中校验 线程安全的

    public class Singleton {
        //双重校验
         private Singleton(){
             
         }
         private static volatile Singleton singleton = null;
         
         public static Singleton getInstance(){
             if(singleton==null){
                 synchronized(Singleton.class){
                     if (singleton==null) {
                        return new Singleton();
                    }
                 }
             }
            return singleton;
         }
    }

    4静态内部类也就是嵌套类 线程安全的

    public class Singleton {
        
        private Singleton(){}
        
        private static class InstanceHolder{
            private static Singleton singleton = new Singleton();
        }
        public static Singleton getInstance(){
            return InstanceHolder.singleton;
        }
    
    }
    synchronized会影响服务性能,为什么会影响,不太清楚,以后懂了在补充。静态内部类(嵌套类)相比之下会好些
  • 相关阅读:
    引擎优化笔记3
    IP/TCP/UDP checsum
    引擎优化笔记2
    Hive Map结构
    clickhouse概述
    Hive小文件合并
    hive计算引擎~Tez
    Hive优化~参数优化
    Hive分析窗口函数(三) CUME_DIST,PERCENT_RANK
    HIve实现数据抽样
  • 原文地址:https://www.cnblogs.com/chenzhibo/p/5131578.html
Copyright © 2011-2022 走看看