单例模式的优化-双重锁定
Posted 真爱无限
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式的优化-双重锁定相关的知识,希望对你有一定的参考价值。
三种单例模式写法:
public class Singleton
private static Singleton instance;
private static readonly object syncRoot = new object();
private Singleton()
public static Singleton GetInstance()
if (instance == null)//Double-Check Locking 双重锁定,比直接lock性能更好,最完美的模式(懒汉式单例)
lock (syncRoot)
if (instance == null)
instance = new Singleton();
return instance;
public class Singleton1
private static Singleton1 instance;
private static readonly object syncRoot = new object();
private Singleton1()
public static Singleton1 GetInstance()
lock (syncRoot)//每次调用GetInstance都需要lock,影响性能(懒汉式单例)
if (instance == null)
instance = new Singleton1();
return instance;
public class Singleton2
private static Singleton2 instance=new Singleton2();//静态初始化方式(饿汉式单例),类一加载就实例化对象,一般这样用也没问题,缺点:提前占用系统资源
private Singleton2()
public static Singleton2 GetInstance()
return instance;
双重锁定性能优化分析:
以上是关于单例模式的优化-双重锁定的主要内容,如果未能解决你的问题,请参考以下文章