
class Singleton //延迟加载,这种实现在多线程中存在线程安全的问题
{
private static Singleton _instance;
public static Singleton getSingleton()
{
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
class Singleton_DoubleCheckedLocked
{
private static Singleton_DoubleCheckedLocked _instance;
public static Singleton_DoubleCheckedLocked getSingleton()
{
if (_instance == null)
{
lock (this) //lock锁的对象必须为引用类型的(字符串除外)且最好不要是public类型对象
{
if (_instance == null)
{
_instance = new Singleton_DoubleCheckedLocked();
}
}
}
return _instance;
}
}
class SingletonAutoInitial //非延迟加载
{
private static SingletonAutoInitial _instance = new SingletonAutoInitial();
public static SingletonAutoInitial getSingleton()
{
return _instance;
}
}

浙公网安备 33010602011771号