public class Singleton
{
private static Singleton instance;
/// <summary>
/// 程序运行时,创建一个静态只读的进程辅助对象
/// </summary>
private static readonly object _object = new object();
/// <summary>
/// 构造方法私有,外键不能通过New类实例化此类
/// </summary>
private Singleton()
{
}
/// <summary>
/// 此方法是本类实例的唯一全局访问点
/// (双重加锁 Double-Check Locking)
/// </summary>
/// <returns></returns>
public static Singleton GetInstance()
{
//先判断实例是否存在,不存在再加锁处理
if (instance == null)
{
//在同一时刻加了锁的那部分程序只有一个线程可以进入,
lock (_object)
{
//如实例不存在,则New一个新实例,否则返回已有实例
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
本文介绍了一种使用双重检查锁定(Double-Check Locking)实现单例模式的方法,该方法确保了线程安全性并提高了效率。通过私有构造函数防止外部实例化,并通过静态方法提供全局唯一实例。
1263

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



