深入理解java虚拟机一书中说道,valatile变量不需要与其他状态变量一同参与不变约束这一句话应该如何理解?
valatile变量是进行原子性操作的保证,即用valatile修饰的变量会在当前线程栈中创建一个变量副本,操作不是去操作原来的变量,而是操作副本变量。在c语言中这个关键词用来强制要求编译器执行操作。
volatile只要两个作用。一个禁止寄存器cache。这样可以读取到最新值。另一个是它会防止指令重排。