线程B可能具有这些变量的CPU本地缓存。读取volatile变量可确保观察到从先前对volatile的任何中间刷新。
例如,请阅读以下链接,该链接以“使用易失性修复双重检查锁定”结尾:
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

线程B可能具有这些变量的CPU本地缓存。读取volatile变量可确保观察到从先前对volatile的任何中间刷新。
例如,请阅读以下链接,该链接以“使用易失性修复双重检查锁定”结尾:
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html