volatile 数据一致性的机制

volatile  是在多线程情况下,可进行共享变量数据同步的关键字。

多线程下的java内存模型

主内存:服务器的内存

cpu:执行程序处理器

工作内存:当前线程独有的内存

当多线程开始执行,共享变量已存在在主内存中,线程开始对变量进行读取,然后加载到对应的工作内存(相当于每个线程都把共享变量复制了一份到其对应的工作内存中),然后使用变量进行计算,将计算好的值重新赋值到工作内存中,将工作内存的数据存储到主内存中,将store的变量赋值给主内存的变量,这就完成了大致的原子性操作的内存模型的流程。

volatile 机制:使用到该共享变量的线程会开启一个cpu总线嗅探监听机制去监听主内存的变量,当主内存的变量值被重新write,该监听线程会将当前工作内存中的变量副本置为失效,然后线程执行的时发现变量失效需要重新读取主内存的变量然后就实现了共享变量的数据一致。

Guess you like

Origin blog.csdn.net/u012565281/article/details/113615727