一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache return value END IF 看上去逻辑无比正确,但实际上会造成2种问题: 1.这种方法是不线程安全的. 2.产生数值写入重复,造成错误的数据. 如下图,在线程1执行计算数值的过程中,线程2也进入数据检查,将多次写入数据,程序非常危险. 演示错误代码: //最容易产生的错误写法,先读取缓存…