单例模式

2021-08-10  本文已影响0人  易点梅
//双if + lock 实现线程安全的单例模式
    class Singleton
    {
        private Singleton() { }

        private static Singleton _singleton = null;

        private static object _lock = new object();

        public static Singleton CreateSingleton()
        {
            if(_singleton == null)
            {
                Console.WriteLine("路过。。");
                lock(_lock)
                {
                    if(_singleton == null)
                    {
                        Console.WriteLine("被创建。。");
                        _singleton = new Singleton();
                        Thread.Sleep(3000);
                    }
                }
            }
            return _singleton;
        }
    }

    //利用静态只读变量实现单例模式
    class Singleton2
    {
        private Singleton2() { }

        private static readonly Singleton2 _singleton2 = new Singleton2();

        public static Singleton2 CreateSingleton2 
        {
            get { return _singleton2; }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读