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会影响服务性能,为什么会影响,不太清楚,以后懂了在补充。静态内部类(嵌套类)相比之下会好些
  • 相关阅读:
    1、使用Xcode修改iOS项目工程名和路径名
    ios 里如何处理四舍五入的问题
    ios app 开发中ipa重新签名步骤介绍
    如何重新签名ipa文件
    最近研究xcodebuild批量打包的一些心得
    C#Timer
    插座断电提醒(测试阶段)
    C#MessageBox 自动关闭窗口
    插座继电器测试
    C# TCPListener
  • 原文地址:https://www.cnblogs.com/chenzhibo/p/5131578.html
Copyright © 2011-2022 走看看