懒汉模式的双重检测机制
来源:4-1 安全发布对象-发布与逸出
blanc_
2018-09-01
老师,这个getinstance方法上直接加锁是一个判空和一个new,双重检测机制先判空 然后锁里又要判空和new操作 。。。。 这样岂不是双重检测机制的性能更差么。。。为什么不直接用直接锁方法呢
写回答
1回答
-
你好,这个里面性能差别很大,而且是双重检测的性能要好很多。核心点就在于第一次判空那里,双重检测只在那个瞬间会让synchronized代码段起作用,之后使用时因为已经初始化,会直接在判断完返回实例。
而直接加锁的话,相当于每次获取这个实例时都要经过synchronized锁,每次只能有一个线程可以去获取,这样在实际中可能会带来大量的阻塞。
我们都知道锁很影响性能,因此在实际使用时要尽可能让锁的范围更小。10
相似问题