单例模式
2021-08-10 本文已影响0人
易点梅
//双if + lock 实现线程安全的单例模式
class Singleton
{
private Singleton() { }
private static Singleton _singleton = null;
private static object _lock = new object();
public static Singleton CreateSingleton()
{
if(_singleton == null)
{
Console.WriteLine("路过。。");
lock(_lock)
{
if(_singleton == null)
{
Console.WriteLine("被创建。。");
_singleton = new Singleton();
Thread.Sleep(3000);
}
}
}
return _singleton;
}
}
//利用静态只读变量实现单例模式
class Singleton2
{
private Singleton2() { }
private static readonly Singleton2 _singleton2 = new Singleton2();
public static Singleton2 CreateSingleton2
{
get { return _singleton2; }
}
}