首页 新闻 会员 周边 捐助

关于线程安全的单例模式

0
悬赏园豆:20 [已解决问题] 解决于 2011-07-25 16:11

public class MyClass
{
private MyClass() { }

//保证线程安全的延时加载单例
public static MyClass Instance
{
get { return Nested._Instance; }
}

private class Nested
{
static Nested() { }
internal static readonly MyClass _Instance = new MyClass();
}

}
最近看到一种单例模式的实现,但实在不理解为何是线程安全的,请各位大牛们赐教

传说的青蛙的主页 传说的青蛙 | 初学一级 | 园豆:2
提问于:2011-07-25 11:24
< >
分享
最佳答案
0

线程安全是针对多个线程同时运行来说的,这段代码中是用静态变量来实现的,当程序加载时就只有一个实例存在于内存中

收获园豆:10
artwl | 专家六级 |园豆:16736 | 2011-07-25 11:55
其他回答(2)
0

标记一下。。。

顾晓北 | 园豆:10898 (专家六级) | 2011-07-25 12:29
0

这个用法主要是凸显延迟加载,只有当第一次调用Instance时才会实例化内联类里的单件,而且用的都是静态方法调用,多线程时也不会存在多次实例化的可能。STATIC实现单例是C#有特色的地方,由于内存中只会有一份实例,多个线程同时访问得到的是同一个_Instance实例。这种内联+静态的单例方法我还没用过喃,互相学习了

收获园豆:10
Mr__BRIGHT | 园豆:165 (初学一级) | 2011-07-25 16:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册