一般的,设计模式中用到单例模式,代码通常会如下:public sealed class Singleton
{
private static Singleton instance=null;
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance==null)
{
instance = new Singleton();
}
return instance;
}
}
}
代码比较简单,用到一个公有的静态属性和一个私有的静态字段。并且把构造函数设为私有,防止该类被实例化。
但上述代码在多线程情况下并不可靠。有一种情况下。2个线程在get的时候,都检测到instance==null,因此各自创建了一个Singleton对象,破坏了单例的原则。
因此改进后的代码就是加锁。public sealed class Singleton
{
private static Singleton instance = null;
private static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{