前言:单例模式是我们在软件开发中比较常用的模式之一,能很好的理解并运用对软件的性能是有很大的帮助的。
一、最简单的单例模式
public class Singleton { private static Singleton _instance = new Singleton(); private Singleton() { } public static Singleton GetInstance() { return _instance; } }
点评:该种实现,在程序一运行就将对象加载到内存,由于静态变量是常驻于内存不会被GC回收,故该实例化方式适用于经常使用的对象。对象一开始就被实例化了所以在多线程环境下是线程安全的。
二、双重锁单例模式
public class Singleton { private static object obj = new object(); private static Singleton _singletion; private Singleton() { } public static Singleton Instance { get { if (_singletion == null) { lock (obj) { if (_singletion == null) { _singletion = new Singleton(); } } } return _singletion; } } }
点评:双重锁,保证了在多线程环境下对字典或集合的操作是安全的,使用于缓存的读取。
原文:https://www.cnblogs.com/heweijian/p/5511688.html