作者回复: volatile要操作主存,不能用cpu的高速缓存,所以更慢。
作者回复: 应该不会,单次的写应该是原子性的,对应到CPU的一个指令。如果这个都不能保证的话就乱套了。比如说,两个线程向同一个堆上的变量a写数据,一个写0x123456789,一个写0x987654321。那么这个变量a的值要么是0x123456789要么是0x987654321。不可能是0x123456321,或者0x983456789,或者0x183654389