PDF 课件和源代码下载地址:
https://github.com/geektime-geekbang/LetsJava
作者回复:
volatile要操作主存,不能用cpu的高速缓存,所以更慢。
作者回复:
应该不会,单次的写应该是原子性的,对应到CPU的一个指令。如果这个都不能保证的话就乱套了。
比如说,两个线程向同一个堆上的变量a写数据,一个写0x123456789,一个写0x987654321。
那么这个变量a的值要么是0x123456789要么是0x987654321。不可能是0x123456321,或者0x983456789,或者0x183654389