1. volatile 关键字保证修改对所有子线程立即可见,(cpu 对总线嗅探,缓存一致性协议,内存屏障)
2. 对于非原子性操作(多步),子线程读取最新值 A 后,在做别的操作的期间,值又被修改为 B,
这次操作只会使用 A 的值,而不是最新值 B。所以不要在非原子性操作中使用 volatile 变量,这样是
线程不安全的。
3. volatile 保证 read -> load ->use 和 assgin -> store -> write 不可断开