• C# 设计模式(1)单例模式


    单例模式:

    1. 程序只需要这个对象实列化一次.

    2. 不能解决多线程并发问题

    3. 主要应用于 数据库连接池、线程池、流水号生成器、配置文件读取、IOC容器实列

    实现方法一(懒汉式)

        class Program
        {
            static void Main(string[] args)
            {
                for (int i = 0; i < 5; i++)
                {
                    Task.Run(() =>
                    {
                        Console.WriteLine($"HashCode is {Singleton.GetInstance().GetHashCode()}");
                    });
                }
    
                Console.ReadLine();
            }
        }
    
        public class Singleton
        {
            private static Singleton _singleton;
            private static readonly object _lock = new object();
            private Singleton()
            {
                
            }
    
            public static Singleton GetInstance()
            {
                if(_singleton==null)
                {
                    lock (_lock)
                    {
                        if (_singleton == null)
                            _singleton = new Singleton();
                    }
                }
                return _singleton;
            }
        }
    

     实现方法二:(饿汉式)

        class Program
        {
            static void Main(string[] args)
            {
                for (int i = 0; i < 5; i++)
                {
                    Task.Run(() =>
                    {
                        Console.WriteLine($"HashCode is {SingletonSecond.GetInstance().GetHashCode()}");
                    });
                }
                Console.ReadLine();
            }
        }
    
        public class SingletonSecond
        {
            private static readonly SingletonSecond _singletonSecond;
            private SingletonSecond()
            {
    
            }
    
            static SingletonSecond()
            {
               _singletonSecond =  new SingletonSecond();
            }
    
            public static SingletonSecond GetInstance()
            {
                return _singletonSecond;
            }
        }
    

  • 相关阅读:
    js 中的 EventLoop
    线程的并发工具类
    xpath获取某个节点下的全部字节点的文本
    2020中国 .NET开发者大会精彩回顾:葡萄城高性能表格技术解读
    .NET 控件集 ComponentOne V2020.0 Update3 发布,正式支持 .NET 5
    log4net配置
    TP5.1 爬虫
    pip下载慢
    TP5.1 二维码生成
    composer插件集合
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14060090.html
Copyright © 2020-2023  润新知