今天看了umbraco 的源代码, 发现了这个非常漂亮的Singleton模板
惟一的不足是, 构造函数是public, 只能靠开发人员自己控制了.

/// <summary>
    /// 
    /// Threadsafe Singleton best practice design pattern template
    /// 
    /// Sample:
    /// 
    /// public class Demo
    /// {
    ///        public static Form1 instance1
    ///        {
    ///            get
    ///            {
    ///                return Singleton<Form1>.Instance;
    ///            }
    ///        }
    ///    }
    /// </summary>
    /// <typeparam name="T">Any class that implements default constructor</typeparam>
    public sealed class Singleton<T> where T : new()
    {
        private Singleton()
        {
        }

public static T Instance
        {
            get { return Nested.instance; }
        }

private class Nested
        {
            // Explicit static constructor to tell C# compiler
            // not to mark type as beforefieldinit
            static Nested()
            {
            }

internal static readonly T instance = new T();
        }
    }

线程安全的Singleton模板相关推荐

  1. 用模板实现单例模式(线程安全)、模板方式实现动态创建对象

    一.用模板实现单例模式 在前面的文章中,用过多种方法实现单例模式,现在用模板方式来实现: 为了实现线程安全,需要在linux 下使用pthread_mutex_t 加锁,请使用g++ 编译并需要链接 ...

  2. 2017年50道Java线程面试题

    下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编 ...

  3. Java线程面试题 Top 50(转)

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...

  4. 【多线程】Java线程面试题 Top 50(转载)

    Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎加入 ...

  5. spring线程并发处理(ThreadLocal)

    我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度.这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突. 我们使用模板类访问底层数据,根据持 ...

  6. Java线程面试题 Top 50

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 不管你是新程序员还是老手,你一定在面试 ...

  7. Spring如何处理线程并发

    http://www.kaifajie.cn/spring/9255.html 我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度.这些模板类都是线程安全的,也就是说,多个 ...

  8. Java线程相关的热门面试题

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

  9. 深入浅出单实例Singleton设计模式

    深入浅出单实例Singleton设计模式 陈皓 前序 单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了.这个设计模式主要目的是想在整 ...

最新文章

  1. asp批量生成html静态页面方法
  2. gdiplus拼接两张图片_深色模式下的图片变暗问题,解决了!
  3. 在Spring Cloud中集成和使用CSE快速实现商业产品
  4. spring-test测试demo
  5. gyp verb ensuring that file exists: C:\Python27\python.exe
  6. 新趋势下的云计算安全行业前沿认证 | CCSK
  7. 香农码字matlab,香农编码的MATLAB实现.ppt
  8. SoC,SiP,IP和Chiplet的区别
  9. poj3537 Crosses ans Crosses
  10. mysql-bin.index_mysqlbin.index是什么文件
  11. 牛客HTML专项练习【错题+知识点辨析】(持续更新中)
  12. 依图科技 CTO 颜水成:视觉计算—AI 算法 vs. AI 芯片
  13. redis的压缩列表和跳表,看这一篇文章就够了
  14. 五猴分桃python_猴子分桃问题 | 学步园
  15. oracle实例由,Oracle 数据库的实例由( )组成
  16. 第三阶段:1.数据分析:2.定性定量数据分析
  17. 路径上有/**/、/*/的含义
  18. 华雨打shanghtml单页网站源码
  19. Windows操作系统常见故障
  20. 软件及互联网高端灵活用工与技术服务提供商

热门文章

  1. python与pexpect实现ssh操作
  2. 在网页中显示CHM (c# csharp .net asp.net winform)
  3. 邮件服务器实用技巧和选购指南
  4. Linux程序设计之套接字: 循环服务 并发服务
  5. C# Learning—Step By Step(9)
  6. The request was rejected by the HTTP filter
  7. 点击APPicon之后都发生了什么
  8. Web应用中优化IBatis性能
  9. 菜鸟的学习之路(7) — 包(package)、Object类和String类
  10. ArrayList 使用迭代抛出ConcurrentModificationException解决方法