单例模式及其调用

最近做了一个关于单例模式类的实现及方法调用

创建一个单例模式

 1     /// <summary>
 2     /// 单例模式:
 3     /// </summary>
 4     public class Singleton
 5     { 
 6         // 定义一个静态变量来保存类的实例
 7         public static Singleton Instance;
 8 
 9         // 定义一个标识确保线程同步
10         private static readonly object locker = new object();
11 
12         // 定义私有构造函数,使外界不能创建该类实例
13         private Singleton() {}
14 
15         /// <summary>
16         /// 定义公有方法提供一个全局访问点,同时你也可以定义公有属性来提供全局访问点
17         /// </summary>
18         /// <returns></returns>
19         public static Singleton GetInstance()
20         {
21             // 当第一个线程运行到这里时,此时会对locker对象 "加锁",
22             // 当第二个线程运行该方法时,首先检测到locker对象为"加锁"状态,该线程就会挂起等待第一个线程解锁
23             // lock语句运行完之后(即线程运行完之后)会对该对象"解锁"
24             // 双重锁定只需要一句判断就可以了
25             if (Instance == null)
26             {
27                 lock (locker)
28                 {
29                     // 如果类的实例不存在则创建,否则直接返回
30                     if (Instance == null)
31                     {
32                         Instance = new Singleton();
33                     }
34                 }
35             }
36             return Instance;
37         }
38 
39         /// <summary>
40         ///  
41         /// </summary>
42         private void InitLoad()
43         {
44 
45             // 其他逻辑代码
46         }
47 
48   }

 

方法调用:

Singleton.GetInstance().InitLoad();//单例模式:方法调用 

 

上一篇:JVM 解剖公园:JNI 临界区与 GC Locker


下一篇:(原创)C++ 同步队列