Java-volatile

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zhangdong2012/article/details/81151596

个人理解记录

volatile可以理解为一个轻量级的synchronized,它主要用来修饰变量,用来保证在多线程环境下变量只对不用线程的可见性,基于jmm的抽象内存模型,volatile变量可以保证原子操作结果能够及时的从线程本地内存刷新到主内存,并对其他线程立即可见。

从原理角度看,被volatile修饰的编程在编译时会加入一个lock指令,这个指令在jvm及硬件层面可以保证两点:一是立即将写入volatile变量的值从本地内存刷新到主内存,二是将其他线程本地内存中该变量的副本置为无效,也就是强制其他线程重新从主内存中加载变了值。通过以上两个机制就能保证变量值的内存可见性。

猜你喜欢

转载自blog.csdn.net/zhangdong2012/article/details/81151596