zoukankan      html  css  js  c++  java
  • 设计模式之一:单例模式SingleTon

     
        
    //单线程下的单例模式    
     
        
    class SingleTon
        {
            
    private static SingleTon _inst;
            
    private static SingleTon() { }
            
    public SingleTon Instance
            {
                
    get
                {
                    
    if (null != _inst)
                    {
                        _inst 
    = new SingleTon();
                    }
                    
    return _inst;
                }
            }
        }
     
        //多线程下的单例模式(饱汉式)
        class SingleTon
        {
            
    private static volatile SingleTon _inst;
            
    private static object lockhelper = new object();
            
    private SingleTon() { }
            
    public SingleTon Instance
            {
                
    get
                {
                    
    if (null != _inst)
                    {
                        
    lock (lockhelper)
                        {
                            
    // 此处使用双重判断防止多线程已经进入第一个判断然后等待解锁后创建实例
                            if (null != _inst)  
                            {
                                _inst 
    = new SingleTon();
                            }
                        }
                    }
                    
    return _inst;
                }
            }
        }
     
        //更简单的实现(饿汉式)
        //readonly 保证实例只能在声明时候或在静态构造器里初始化
        sealed class SingleTon
        {
            
    private SingleTon() { }
            
    public static readonly SingleTon Instance = new SingleTon();
        }
  • 相关阅读:
    BIO与NIO、AIO的区别
    Java虚拟机
    PV模型
    HashMap、HashSet源代码分析其 Hash 存储机制
    单节点到分布式集群
    Oracle表分区
    ZooKeeper原理
    oracle中的 exists 和 in 的效率问题
    OQL对象查询语言
    keepalived openssl 报错
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2095142.html
Copyright © 2011-2022 走看看