博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 单例模式
阅读量:6390 次
发布时间:2019-06-23

本文共 1150 字,大约阅读时间需要 3 分钟。

  hot3.png

///     /// 单例模式的实现    ///     public class Singleton    {        // 定义一个静态变量来保存类的实例        private static Singleton uniqueInstance;        // 定义一个标识确保线程同步        private static readonly object locker = new object();        // 定义-------私有----构造函数,使外界不能创建该类实例        //如果私有构造函数不存在就可以使用new ,提供一个概念在new的时候默认会访问无参公有构造函数        private Singleton()        {        }        ///         /// 定义公有方法提供一个全局访问点,同时你也可以定义公有属性来提供全局访问点        ///         /// 
public static Singleton GetInstance() { // 当第一个线程运行到这里时,此时会对locker对象 "加锁", // 当第二个线程运行该方法时,首先检测到locker对象为"加锁"状态,该线程就会挂起等待第一个线程解锁 // lock语句运行完之后(即线程运行完之后)会对该对象"解锁" // 双重锁定只需要一句判断就可以了 if (uniqueInstance == null) { ///多线程下必须加锁不然会导致多线程同时访问的时候创建多个对象 核心 lock (locker) { // 如果类的实例不存在则创建,否则直接返回 if (uniqueInstance == null) { uniqueInstance = new Singleton(); } } } return uniqueInstance; } }

转载于:https://my.oschina.net/stuyun/blog/2254492

你可能感兴趣的文章
Vue-router(三) 参数传递
查看>>
2011百度之星初赛B圆环
查看>>
《转》VMware vSphere 5.1 学习系列之四:安装 SQL Server 数据库
查看>>
网页主动探测工具使用
查看>>
数组-splice
查看>>
React多页面应用脚手架-v1.3.0
查看>>
Git 取消上一次commit操作,但保留add操作
查看>>
用MySQL实现微博关注关系的方案分析
查看>>
form
查看>>
模板方法设计模式与策略模式
查看>>
GPSInfoProvider定位
查看>>
wamp如何更改网站根目录DocumentRoot
查看>>
CYQ.Data V4系列全面开源(2013-08-04)
查看>>
socket udp
查看>>
maven 内置参数
查看>>
mac terminal vim delete key
查看>>
linux标准daemon编写方式
查看>>
minicom HOWTO
查看>>
23种设计模式MM版形象描述
查看>>
java计算开方
查看>>