多线程版本的 if —->Balking模式

将并发处理逻辑和业务逻辑分开。

双重检查中的第一次检查,完全是出于对性能的考量:避免执行加锁操作,因为加锁操作很耗时。而加锁之后的二次检查,则是出于对安全性负责

课后思考

需要加锁