1. 双向锁定 线程安全
class SingletonClass
{
public static SingletonClass SingletonClass { get; set; }
public readonly static object locker = new object();
private SingletonClass()
{ }
public static void CreateSingletonClassInstance()
{
if (SingletonClass == null)
{
lock (locker)
{
SingletonClass instanceClass = new SingletonClass();
if (SingletonClass == null)
{
SingletonClass = instanceClass;
}
}
}
}
}
2. 用到了readonly字段编译时初始化的性质 线程安全
sealed class SingletonClass
{
public readonly static SingletonClass singletonClass;
private SingletonClass()
{ }
static SingletonClass()
{
if (singletonClass == null)
singletonClass = new SingletonClass();
}
}
本文介绍了两种实现线程安全的单例模式的方法:一种是使用双向锁定确保实例创建过程中的线程安全性;另一种是在编译时初始化readonly字段以达到线程安全的目的。
1502

被折叠的 条评论
为什么被折叠?



