当前位置: 首页 > news >正文

四川平台网站建设方案网站建设推广优化招聘模板

四川平台网站建设方案,网站建设推广优化招聘模板,官网华为,沈阳工务轨道建设网站单例模式 (Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化对个对象,一个最好的办法就是,让类自身负责保护它的唯一实例。这个类可以保证没…
  单例模式 (Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化对个对象,一个最好的办法就是,让类自身负责保护它的唯一实例。这个类可以保证没有其他实例可以被创建。并且它可以提供一个访问该实例的方法。
在这里插入图片描述

   Singleton类,定义一个GetInstance操作,允许客户访问它的唯一实例。GetInstance是一个静态方法,主要是负责创建自己的唯一实例。

class Singleton
{private static Singleton instance;//构造方法让其private 这就堵死了外界利用new创建此类实例的可能private Singleton(){}//此方法是获得本类实例的唯一全局访问点public static Singleton GetInstance(){if (instance == null) //若实例不存在,则New一个新实例,否则返回已有的实例{instance = new Singleton();}return instance;}
}

客户端代码:

 static void Main(string[] args){Singleton s1 = Singleton.GetInstance();Singleton s2 = Singleton.GetInstance();if (s1 == s2) //比较两次实例化后对象的结果是实例相同的{Console.WriteLine("两个对象是相同的实例");}Console.ReadKey();}

单例模式的好处:
1、可以保证唯一的实例。
2、可以严格地控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。
单例模式与实用类的静态方法区别:
1、实用类不保存状态,仅提供一些静态方法或静态属性让你使用。
单例虽然实例唯一,却是可以有子类来继承。
2、实用类是一些方法属性的集合,单例是有着唯一的对象实例。
二、多线程时的单例
在多线程程序中,注意是同时访问Singleton类,调用GetInstance()方法,会可能造成创建多个实例的。这个时候可以给进程加一把锁来处理。
lock语句: lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区,如果其他线程试图进入锁定的代码,则它已知等待(即被阻止),指导该对象被释放。

 class Singleton{private static Singleton instance;//程序运行时创建一个静态只读的进程辅助对象private static readonly object syncRoot = new object();//构造方法让其private 这就堵死了外界利用new创建此类实例的可能private Singleton(){}//此方法是获得本类实例的唯一全局访问点public static Singleton GetInstance(){lock (syncRoot)//在同一时刻加了锁的那部分程序只有一个线程可以进入{if (instance == null) //若实例不存在,则New一个新实例,否则返回已有的实例{instance = new Singleton();}}return instance;}

}
这段代码使得对象实例由最先进入的那个线程创建,以后的线程在进入时不再去创建对象实例了。由于有了lock,就保证了多线程环境下的同时访问也不会造成多个实例的生产。
三、双重锁定
如果上面每次调用GetInstance方法时都需要lock,这样做法会影响性能,所以可以双重锁定。

 public static Singleton GetInstance(){//先判断实例是否存在,不存在在加锁.if (instance == null){lock (syncRoot){if (instance == null){instance = new Singleton();}}}return instance;}

现在这样,我们不用让线程每次都加锁了,而只是在实例未被创建的时候再加锁处理。同时也保证多线程的安全。这种做法被称为Double-Check Locking(双重锁定)。

http://www.dtcms.com/a/615567.html

相关文章:

  • 外包网站开发合同范本自己做网站可以用私有云吗
  • 网站名注册百度收录入口
  • 用flash做的网站网站的经典推广方法
  • 代做毕设网站万户网络学校网站建设
  • nanochat 三 模型结构详解
  • 专门做水产海鲜的网站吗广东东莞厚街买婬女
  • 网站开发用php还pyt h on网站首页默认的文件名一般为
  • 园林网站免费模板国外做兼职网站
  • 医院营销型网站建设网站开发技术主题
  • 吉林市建设工程档案馆网站做网站优化如何写方案
  • 微信公众号里的网站怎么做的做公司产品展示网站
  • 做个简单的网站app开发的流程
  • 做网站高校视频单位装专用的网站网页归档
  • 徐州有哪些制作网站的公司wordpress 获取最新文章
  • 免费网站应用软件制作网页倒计时按钮
  • 在公司网站建设会议上的汇报有没有哪种网站推荐一下
  • 数 码 管
  • 黑彩网站怎么做零一云主机
  • 电商网站需求分析内蒙古兴泰建设集团信息化网站
  • 平邑网站建设可以用手机建设网站吗
  • 龙岩做网站的公司一个网站的年维护费
  • MySQL 并发控制机制详解:锁机制、MVCC 与 Read View
  • 学做php网站有哪些怎么做网站投放广告
  • 泾阳网站建设网站建设 百度经验
  • 注册网站花的钱做会计分录河北保定最新消息
  • 海网站建设生产厂家哪家好广告公司现状
  • 服务器添加网站asp.net企业网站建设
  • 中国轻工建设协会网站最方便在线网站开发
  • 初中信息技术 网站制作无锡谁会建商务网站
  • 自己做网站需要学些什么微信开发网站建设程序