懒汉模式的双重检测机制

来源:4-1 安全发布对象-发布与逸出

blanc_

2018-09-01

老师,这个getinstance方法上直接加锁是一个判空和一个new,双重检测机制先判空 然后锁里又要判空和new操作 。。。。 这样岂不是双重检测机制的性能更差么。。。为什么不直接用直接锁方法呢

写回答

1回答

Jimin

2018-09-01

你好,这个里面性能差别很大,而且是双重检测的性能要好很多。核心点就在于第一次判空那里,双重检测只在那个瞬间会让synchronized代码段起作用,之后使用时因为已经初始化,会直接在判断完返回实例。

而直接加锁的话,相当于每次获取这个实例时都要经过synchronized锁,每次只能有一个线程可以去获取,这样在实际中可能会带来大量的阻塞。

我们都知道锁很影响性能,因此在实际使用时要尽可能让锁的范围更小。

1
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程