单例采用双锁定技术

摘抄自《改善C#程序的157个建议》 —— 建议105:使用私有构造函数强化单例。
   

关于单例的一个著名的技术就是“双锁定”技术。采用双锁定技术后,单例的线程安全版本为:

    public sealed class Singleton
    {
        private static Singleton instance = null;
        static  readonly object padlock=new object();
        Singleton()
        {}

        public static Singleton Instance
        {
            get
            {
                if (instance==null)
                {
                    lock (padlock)
                    {
                        if (instance==null)
                        {
                            instance=new Singleton();
                        }
                    }
                }
                return instance;
            }
        }
    }

最后,要强调的一点是:单例应该同时是一个sealed类型。

原文地址:https://www.cnblogs.com/uncleJOKER/p/3835228.html