• 单例的两种模式


    单例模式分为2种:

     一种是饿汉模式:自己主动实例化。

    public sealed class 单例
    {
    private 单例()
    {

    }

    static readonly 单例 instance = new 单例();
    public static 单例 Instance
    {
    get
    {
    return instance;
    }
    }


    }

    通常这种方式readonly跟static一起使用,它的初始化交由静态字段实现,并可以在运行时编译。(静态变量直接在后面赋值,编译成IL之后是在和在静态构造函数里面实例化是一样的.因此也可以写到stati 单例(){}里) 这种模式我们无需自己解决线程安全性问题。CLR会给我们解决。

    二种是懒汉模式:

      使用了双重锁方式较好地解决了多线程下的单例模式实现。先看内层的if语句块,使用这个语句块时,先进行加锁操作,保证只有一个线程可以访问该语句块,进而保证只创建了一个实例。再看外层的if语句块,这使得每个线程欲获取实例时不必每次都得加锁,因为只有实例为空时(即需要创建一个实例),才需加锁创建,若果已存在一个实例,就直接返回该实例,节省了性能开销。

        public class 单例1
        {
            static  单例1 instance;
            static object objhelp = new object();
            public static 单例1 Instance
            {
                get
                {
                    if (instance == null)
                    {
                        lock (objhelp)
                        {
                            if(instance==null)
                            instance = new 单例1();
                        }
                    }
                    return instance;
                }
            }
        }
    
  • 相关阅读:
    被刷登录接口
    移动端布局方案
    容易遗忘的Javascript点
    java 笔记02
    java 笔记01
    C# 日常整理
    reac-native 0.61开发环境
    DOS命令收集
    vue整理日常。
    php7.1+apache2.4.x+mysql5.7安装配置(目前windows)
  • 原文地址:https://www.cnblogs.com/linjiancun/p/2068420.html
Copyright © 2020-2023  润新知