双重检查锁定模式(Double Checked Locking)

19-06-24 jdon
              

意图

通过首先测试锁定标准而不实际获取锁定来减少获取锁定的开销。仅当锁定标准检查指示需要锁定时,实际锁定逻辑才会继续。

适用场景

  • 在对象创建中存在并发访问,例如singleton,在那里你想要创建同一个类的单个实例,并且当有两个或多个线程检查实例是否为null时,检查它是否为空可能还不够。
  • 方法中存在并发访问,方法的行为根据某些约束而发生变化,并且这些约束在此方法中也发生改变,