using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPattern_Singleton
{
class Student
{
//volatile关键字保证编译器编译代码顺序
private static volatile Student instance = null;
//辅助实例对象
private static object lockHelper = new object();
private Student() { }
public static Student Instance {
get {
if(instance==null){
lock(lockHelper){//将线程锁住,保证一个线程执行完,生成一个实例对象。
if (instance == null) {
instance = new Student();
}
}
}
return instance;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPattern_Singleton
{
class Student
{
//volatile关键字保证编译器编译代码顺序
private static volatile Student instance = null;
//辅助实例对象
private static object lockHelper = new object();
private Student() { }
public static Student Instance {
get {
if(instance==null){
lock(lockHelper){//将线程锁住,保证一个线程执行完,生成一个实例对象。
if (instance == null) {
instance = new Student();
}
}
}
return instance;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPattern_Singleton
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("对多线程的单例设计模式");
Student stu1 = Student.Instance;
Student stu2 = Student.Instance;
if (stu1 == stu2)
{
Console.WriteLine("true");
}
else {
Console.WriteLine("false");
}
Console.ReadKey();
}
}
}