线程安全的单例模式

线程安全单例实现
本文介绍了两种实现线程安全单例模式的方法:一种利用静态类和readonly字段结合CLR特性来确保实例唯一且线程安全;另一种通过加锁机制防止多线程环境下实例创建多次。

简单举例,线程安全的单例

 public static class SingerDemo
    {
        public static readonly Order CurederOrder;
        //  readonly:只能在构造函数内部可以修改当前字段。其他地方只能只读。所以配合构造函数就能够保证实例是线程安全而且是单例的。

        //CLR帮助我们保证了静态类的构造函数只 被执行一次。【保证线程安全单例模式。】
        static SingerDemo()
        {
            CurederOrder =new Order();   
        }
    }

 

普通的单例,加上lock也可成线程安全的单例

  public class Prodcut
    {
         private  Prodcut()
         {
            
         }

        private static Prodcut _P;

        public static Prodcut GetProduct()
        {
            lock ("sss")
            {
                if (_P == null)
                {
                    _P = new Prodcut();
                }
               
            }
            return _P;
        }
    }

转载于:https://www.cnblogs.com/sixiangqimeng/p/3561329.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值