• 设计模式-单例模式-饿汉和懒汉


      单例模式在编码时,可分成 饿汉和懒汉;

      饿汉式:当类进行初始化的时候,为该类分配内存,并创建对象。

      懒汉式:当类进行初始化的时候,对象不创建,等到使用的时候才创建。

      写饿汉式,记得如下:

        1. 保证单例,即构造方法得私有

        2. 变量需要是 static 和 final ,并且为变量直接创建对象(static可方便方法直接获取,final保证对象引用不可变)

        3. 获取 该类对象的方法必须是static的

      代码如下:

    public class HungrySingle {
    
        private static final HungrySingle hs = new HungrySingle();
    
        private HungrySingle(){}
    
        public static HungrySingle getInstance(){
            return hs;
        }
    }

      写双重检查懒汉式,记得如下:

        1. 保证单例,即构造方法得私有

        2. 变量需要是 static 和 volatile,不需要提前赋值。(static可方便方法直接获取,volatile避免指令重排序)

        3. 获取 该类对象的方法必须是static的

        4. 方法内部进行 双重判断 内架 一个 同步代码块。

      代码如下:

    public class LazySingle {
    
        private static volatile LazySingle lazySingle;
    
        private LazySingle(){}
    
        public static LazySingle getInstance(){
            if(lazySingle == null){
                synchronized (LazySingle.class){
                    if(lazySingle == null){
                        lazySingle = new LazySingle();
                    }
                }
            }
            return lazySingle;
        }
    }

      对上面代码有不惑可参考:https://blog.csdn.net/yeyazhishang/article/details/90445330

  • 相关阅读:
    Linux系统分支之Ubuntu
    运维工具之Netdata
    Antd Tree组件虚拟滚动空白问题
    没有root权限的情况下安装vim
    C++ / Python测量程序执行时间
    Linux dmidecode 命令介绍
    网卡到底是什么
    flannel的革命性的变化是在哪里呢?
    kube-proxy
    cilium
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14500571.html
Copyright © 2020-2023  润新知