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();
        }
  • 相关阅读:
    zabbix-agent报错记录
    远程执行命令恢复
    触发器例子
    自定义监控项
    监控项更新间隔
    python paramiko登陆设备
    python爬取某站磁力链
    python网络编程
    并发爬取网站图片
    Pandas Series和DataFrame的基本概念
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2095142.html
Copyright © 2011-2022 走看看