作者回复: fcb的鱼同学,
你好,这个是由“协议”来保证的。也就是其他CPU,在收到特定的广播消息,必须做什么样的特定操作。
只要“协议”是正确的,其他CPU操作之后的特定结果就会一致。那么,这个协议就是我们这里的MESI协议,你可以对照着下面的状态流转图看一下。
如果你问的是CPU在硬件层面,是否一个操作必定执行成功(好比你让程序算 1+1 = 2 是不是会算错),那这个是要在硬件的电路层面来保证的。在一个分层的软硬件体系下,这个不是MESI协议需要考虑的时间。
作者回复: 山间竹同学,
是的,JVM本质上是个抽象的“计算机硬件”,所以volatile对于JVM维护语义是有意义的,