volatile是轻量级的synchronized,在多线程并发编程中发挥着同步共享变量、禁止处理器重排序的重要作用。
Java中的volatile关键字保证多线程操作时变量的可见性,如果一个变量被volatile所修饰,在每次数据变化之后,其值都会被强制刷入主存。而其他处理器的缓存由于遵守了缓存一致性协议,也会把这个变量的值从主存加载到自己的缓存中。这就保证了一个volatile在并发编程中,其值在多个缓存中是可见的。
volatile除了可以保证数据的可见性之外,还可以禁止指令重排优化等。被volatile修饰的变量的操作,会严格按照代码顺序执行,load->add->save 的执行顺序就是:load、add、save。
线程写 volaitle 变量的步骤为:
改变线程工作内存中 volatile 变量副本的值
将改变后的副本的值从工作内存刷新到主内存
微信扫码关注公众号
获取更多考试热门资料