单例采用双锁定技术

摘抄自《改善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类型。

 

你可能感兴趣的:(单例)