单例模式

单例模式是一种常见的软件设计模式,确保类只有一个实例并提供全局访问。内容涵盖了单例模式的线程不安全性、单锁实现及其可能的性能影响,以及双重锁定方式的介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式:一种常用的软件设计模式,设计模式中最简单的形式之一。

定义:保证一个类仅有一个对象实例,并提供一个访问它的全局访问点。

 

1.线程不安全(适用于单线程环境,因为在多线程的环境下有可能得到Singleton类的多个实例。)

public class A{
private static A instance;
public static A Instance{
  get{
     if(instance==null)instance=new A();
      return instance;
     }
}
//私有化构造器
private A(){}
}

 

2.单锁:如果其他线程试图进入锁定的代码,则它将一直等待,直到该对象被释放。从而确保在多线程下不会创建多个对象实例了。只是这种实现方式要进行同步操作,这将是影响系统性能的瓶颈和增加了额外的开销。

 

3.双重锁定方式:

class Singleton
    {

        private static Singleton _instance;
        //私有化构造器
        private Singleton() { }
        //上锁,双重锁方式较好地解决了多线程下的单例模式实现。(因为线程并发获取实例问题,即可能出现两个线程同时获取instance实例)
        private static object _lock = new object();
        public static Singleton Instance{
            get {
                if (_instance == null)
                {
                    lock (_lock)
                    {
                        if (_instance == null) _instance = new Singleton();
                    }
                }
                return _instance;
            }
        }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值