除此以外,还有一种方式用volatile:
工作内存Work Memory其实就是对CPU寄存器和高速缓存的抽象,或者說每个线程的工作内存也可以简单理解为CPU寄存器和高速缓存
- 发出的LOCK#指令锁总线(或锁缓存行),同时让Thread-B高速缓存中的缓存行内容失效
- Thread-A向主存回写最新修改的i
- Thread-B发现对应地址的缓存行被锁了等待锁的释放,缓存一致性协议会保证它读取到最新的值
由此可以看出volatile关键字的读囷普通变量的读取相比基本没差别,差别主要还是在变量的写操作上