zoukankan      html  css  js  c++  java
  • 单例模式

     #region 数据库层单例模式
    
            private static IDB _EFDB = null;
            // Creates an syn object.
            private static readonly object SynObject = new object();
    
            public static IDB InstanceEFDB
            {
                get
                {
                    // Double-Checked Locking
                    if (null == _EFDB)
                    {
                        lock (SynObject)
                        {
                            if (null == _EFDB)
                            {
                                _EFDB = new EFDB();
                            }
                        }
                    }
                    return _EFDB;
                }
            }
    
            #endregion //数据库层单例模式

    为什么lock()后面还要判断一次  null == _EFDB,由于lock加锁,两个线程则一个进入,另一个在排队等待,必须要其中一个进入并出来后,另一个才能进入,因此如果没有第二次 null == _EFDB 为空的判断,则第一个线程创建了实例,第二个还是可以继续再创建新的实例

  • 相关阅读:
    Codeforces Round #439 (Div. 2)
    Money Systems
    Stamps
    inflate
    多重背包问题
    AIM Tech Round 4 (Div. 2)
    September Challenge 2017
    树的重心
    百度之星2017初赛A
    树上的最大独立集
  • 原文地址:https://www.cnblogs.com/whl4835349/p/12930156.html
Copyright © 2011-2022 走看看