• 设计模式


        单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。私有构造函数,声明静态单例对象,构造单例对象之前要加锁(lock一个静态的object对象),需要两次检测单例实例是否已经被构造,分别在锁之前和锁之后

    public class Singleton {  
        private Singleton() {}                     //关键点0:单例类的构造函数必须私有化,单例类不能被实例化,单例实例只能静态调用
        private static Singleton single = null;    //关键点1:声明单例对象是静态的
        private static object obj= new object();   //必须是引用类型,如果锁是值类型,每个不同的线程在声明的时候值类型变量的地址都不一样,那么上个线程锁住的东西下个线程进来会认为根本没锁,相当于每次都锁了不同的门。引用类型的变量地址是相同的,每个线程进来判断锁都是判断同一个地址。
        public static Singleton GetInstance()      //通过静态方法来构造对象
        {                        
             if (single == null)                   //关键点2:判断单例对象是否已经被构造
             {                             
                lock(obj)                          //关键点3:加线程锁
                {
                   if(single == null)              //关键点4:二次判断单例是否已经被构造,有可能延迟加载或者缓存原因,造成构造多个实例,违反了单例的初衷
                   {
                      single = new Singleton();  
                    }
                 }
             }    
            return single;  
        }  
    }
  • 相关阅读:
    【彩彩只能变身队】(迟到的)团队介绍
    【彩彩只能变身队】用户需求分析(二)—— 调查结果
    【彩彩只能变身队】用户需求分析(一)—— 调查问卷
    C语言I博客作业04
    C语言I博客作业06
    c语言1作业07
    C语言I博客作业03
    C语言I博客作业02
    C语言I博客作业05
    【OpenGL编程指南】之投影和视口变换
  • 原文地址:https://www.cnblogs.com/sanday/p/10149154.html
Copyright © 2020-2023  润新知