A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunrise2 高级黑马   /  2014-7-22 23:13  /  833 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一种最简单,但没有考虑线程安全,在多线程时可能会出问题
  1. public class Singleton
  2. {
  3.     private static Singleton _instance = null;
  4.     private Singleton(){}
  5.     public static Singleton CreateInstance()
  6.     {
  7.         if(_instance == null)

  8.         {
  9.             _instance = new Singleton();
  10.         }
  11.         return _instance;
  12.     }
  13. }
复制代码
第二种考虑了线程安全,有点烦,是正规写法
  1. public class Singleton
  2. {
  3.     private volatile static Singleton _instance = null;
  4.     private static readonly object lockHelper = new object();
  5.     private Singleton(){}
  6.     public static Singleton CreateInstance()
  7.     {
  8.         if(_instance == null)
  9.         {
  10.             lock(lockHelper)
  11.             {
  12.                 if(_instance == null)
  13.                      _instance = new Singleton();
  14.             }
  15.         }
  16.         return _instance;
  17.     }
  18. }
复制代码
第三种可能是C#这样的高级语言特有
  1. public class Singleton
  2. {

  3.     private Singleton(){}
  4.     public static readonly Singleton instance = new Singleton();
  5. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马