单例模式

1.单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点

2.lock 语句的含义:lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待,直到该对象被释放

例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 单例模式
{
    class Program
    {
        static void Main(string[] args)
        {
            Singleton s1 = Singleton.GetInstance();
            Singleton s2 = Singleton.GetInstance();
            if (s1 == s2)
            {
                Console.Write("Objects are the same instance");
            }
            Console.ReadLine();
        }
    }
    class Singleton
    {
        private static Singleton instance;
        private static readonly object syncRoot = new object();
        /// <summary>
        /// 构造函数
        /// </summary>
        private  Singleton()
        {
        }


        public static Singleton GetInstance()
        {
            //双重锁定
            if (instance == null)
            {
                lock (syncRoot)
                {
                    if(instance==null)
                    {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
}

结果:

欢迎转载或分享,如果文章对你有帮助,请给予推荐,欢迎交流及关注!!!
原文地址:https://www.cnblogs.com/dong897812629/p/3026405.html