懒汉式(线程安全,同步代码块儿)

懒汉式(线程安全,同步代码块儿)

代码演示

// 懒汉式 (线程安全_ 同步放法_)
class Singleton{
   private static Singleton instance;

   private Singleton() {

   }
   // 提供一个静态的公有方法 加入了同步处理的代码
   // 解决线程安全问题
   // 即懒汉式
   // 我们在这里加一个关键字 synchronized
   public static Singleton getInstance() {
       if (instance == null) {
           synchronized(Singleton.class){
               instance = new Singleton();
           }
       }
       return instance;
   }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X10OUu0Q-1613785230625)(./img/mm/meizi56.jpg)]

优缺点说明

  1. 这总方式,本意是想对于第四种实现方式的改进,因为前面同步方法效率太低,
    改为同步产生实例化的的代码块

  2. 但是这种同步并不能起到线程同步的作用,跟第三种实现方式遇到的情形一致,假如一个线程进入了if(singleton == null)判断语句块儿,还未来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例

  3. 结论:在实际开发中,不能使用这种方式(没多大卵用)

更多:http://victorfengming.gitee.io/design_pattern/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值