static void Main(string[] args) { try { #region 单线程调用 //for (int i = 0; i < 5; i++) //{ // Singleton singleton = Singleton.CreateInstance(); // singleton.Show(); //} #endregion #region 多线程调用:懒汉式 //for (int i = 0; i < 5; i++) //{ // Task.Run(() =>//启动一个线程执行这些动作;可以认为5个同时执行 // { // Singleton singleton = Singleton.CreateInstance(); // singleton.Show(); // }); //} #endregion #region 多线程调用:饿汉式(静态构造函数) for (int i = 0; i < 5; i++) { SingletonSecond singletonSecond = SingletonSecond.CreateInstance(); singletonSecond.Show(); } #endregion #region 多线程调用:饿汉式(静态字段) //for (int i = 0; i < 5; i++) //{ // Task.Run(() => // { // SingletonThird singletonThird = SingletonThird.CreateInstance(); // singletonThird.Show(); // }); //} #endregion } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); }
/// <summary> /// 静态构造函数:由CLR保证,在第一次使用到这个类型之前,自动被调用且只调用一次 /// 很多初始化都可以写在这里 /// </summary> static SingletonSecond() { _SingletonSecond = new SingletonSecond(); }