zoukankan      html  css  js  c++  java
  • 单例的三种实现方式

    1双重加锁模式

    public class Singleton {
        private volatile static Singleton singleton;
        public static Singleton getSingleton(){
            if(singleton==null){
                synchronized (Singleton.class) {
                    if(singleton==null){
                        singleton = new Singleton();
                    }
                }
            }
            return singleton;
        }
        
        private Singleton(){
            
        }
    }

    2静态内部类

    public class Singleton {
        private Singleton(){
            
        }
        
        public Singleton getSingleton(){
            return SingletonInner.singleton;
        }
        private static class SingletonInner{
            protected  static Singleton singleton = new Singleton();
            
        }
    }

    3枚举

    public enum Singleton {
        Singlton;
        private Singleton(){
            
        }
    }

    由于java提供了反射机制,第一种和第二种方式通过反射机制仍然有可能生成多个实例

  • 相关阅读:
    左耳听风
    极客时间-算法
    极客时间-左耳听风阅读笔记
    涨知识
    学做饭
    开发流程
    线上问题复盘
    反思学习复习练习
    系统安全(转)
    单元测试
  • 原文地址:https://www.cnblogs.com/ystq/p/6659409.html
Copyright © 2011-2022 走看看