zoukankan      html  css  js  c++  java
  • 【单例模式】单例模式

    单例模式

    饿汉式(急切实例化)

    public class EagerSingleton {
    
        /** 1.私有化构造方法 */
        private EagerSingleton() {
        }
        
        /** 2.声明静态成员变量并赋初始值-类初始化的时候静态变量就被加载,因此叫做饿汉式 */
        public static EagerSingleton eagerSingleton=new EagerSingleton();
    
        /** 3.对外暴露公共的实例化方法 */
        public static EagerSingleton getInstance(){
            return eagerSingleton;
        }
        
    }

    懒汉式(延迟实例化)(DCL双重检测)

      -为什么要判断两次?  

        避免由于并发导致的线程安全问题

      -为什么要使用 volatile关键字修饰 ourInstance?

        避免指令重排序,同时保证变量ourInstance在线程之间是可见的

    public class LazySingleton {
    
        /** 1.私有化构造方法 */
        private LazySingleton() {
        }
    
        /** 2.声明静态变量 -这里声明为volatile,是禁止指令重排序 */
        private volatile static LazySingleton ourInstance;
    
        /** 3.对外暴露公共的实例化方法 */
        public static LazySingleton getInstance() {
    
            if (ourInstance == null) {
                synchronized (LazySingleton.class) {
                    if (ourInstance == null) {
                        ourInstance = new LazySingleton();
                    }
                }
            }
            return ourInstance;
        }
    
    }
  • 相关阅读:
    YUM软件管理
    RPM软件包管理
    Linux系统启动详解
    Linux命令行文本处理工具
    Linux多命令协作:管道及重定向
    Linux网络基础配置
    网络基础
    Linux扩展权限
    Linux权限机制
    Linux用户基础
  • 原文地址:https://www.cnblogs.com/july-sunny/p/11675012.html
Copyright © 2011-2022 走看看