单例模式

//双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; }
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容