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();
        }
  • 相关阅读:
    3.2 直线与方程
    3.1.2 两条直线平等与垂直的判定
    GNU Make
    linux 启动后台进程
    go 占位符
    raft 协议
    restTemplate 接收list数据
    JAVA通过实体类生成数据库查询语句(驼峰命名规则)
    flink使用命令开始、停止任务
    SPringBoot 配置类继承WebMvcConfigurationSupport和实现WebMvcConfigurer的使用
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2095142.html
Copyright © 2011-2022 走看看