class SingleTonClazz
{
private static SingleTonClazz singleTon = null;
private static readonly object singleton_lock = new object();//创建锁的目的:为了避免多个线程进入时,同时创建多个对象
// 将锁设置为只读,避免后续对锁的修改,造成锁的无意义
private SingleTonClazz()
{
Console.WriteLine("构造方法。。。");
}
public static SingleTonClazz getInstance()
{
//多线程双层if实现单例
//创建锁的目的:为了避免多个线程进入时,同时创建多个对象,既然已经存在这个对象,就没有必要再进入进行创建对象,提高了程序执行的效率
if (singleTon==null) { //先检测singleton是否为null
lock (singleton_lock) //一开始所有的线程都等在这里
{
if (singleTon == null)//检测singleton是否为null
{
singleTon = new SingleTonClazz();
Console.WriteLine("------");
}
}
}
return singleTon;
}
}
{
private static SingleTonClazz singleTon = null;
private static readonly object singleton_lock = new object();//创建锁的目的:为了避免多个线程进入时,同时创建多个对象
// 将锁设置为只读,避免后续对锁的修改,造成锁的无意义
private SingleTonClazz()
{
Console.WriteLine("构造方法。。。");
}
public static SingleTonClazz getInstance()
{
//多线程双层if实现单例
//创建锁的目的:为了避免多个线程进入时,同时创建多个对象,既然已经存在这个对象,就没有必要再进入进行创建对象,提高了程序执行的效率
if (singleTon==null) { //先检测singleton是否为null
lock (singleton_lock) //一开始所有的线程都等在这里
{
if (singleTon == null)//检测singleton是否为null
{
singleTon = new SingleTonClazz();
Console.WriteLine("------");
}
}
}
return singleTon;
}
}