作用:保证被其修饰 的变量的内存可见性
在编译器优化之后:
当在某个变量的使用频率特别高时,CPU会将该变量直接放在寄存器中,每次都通过寄存器访问该变量的值,然而,当该值发生改变时,寄存器中的值并没有发生变化,也就导致了CPU取到错误的变量值;
若使用volatile修饰此类型变量,那么意味着:CPU每次访问该变量时,都需要将该变量从内存重新加载到寄存器,再访问寄存器中的该变量值!
例:
结果:
加了volatile关键字之后的结果:
谢谢大家的支持!!!!
作用:保证被其修饰 的变量的内存可见性
在编译器优化之后:
当在某个变量的使用频率特别高时,CPU会将该变量直接放在寄存器中,每次都通过寄存器访问该变量的值,然而,当该值发生改变时,寄存器中的值并没有发生变化,也就导致了CPU取到错误的变量值;
若使用volatile修饰此类型变量,那么意味着:CPU每次访问该变量时,都需要将该变量从内存重新加载到寄存器,再访问寄存器中的该变量值!
例:
结果:
加了volatile关键字之后的结果:
谢谢大家的支持!!!!