volatile处理指令重排的一个例子
材料来自 《Java高级程序员面试笔试宝典》第6.1.2节1. 正常情况CPU在运行期间会对指令进行优化,没有依赖关系的指令,他们的顺序可以被重排。在单线程执行下,发生重排是没有问题的,CPU保证顺序不一定一致,但结果一定一致。如以下代码:int i = 0; //(1)i++; //(2)boolean f = false; //(3)f = true; //(4)(1) 和 (3) 没有依赖关系,(1) 可能会排到(3)之后;而(1)和(2)有依赖关系,CPU一定会安排(1)早于(.





