volatile关键字原理

来源:互联网 发布:网络备案登记管理规定 编辑:程序博客网 时间:2024/06/10 19:34

    前提:1.带有缓存的cpu执行程序时,会提前将要执行的多条语句存入到缓存中,比如某些架构的cpu拥有3M的L1,L2,L3缓存。

               2.带有LOCK前缀的汇编指令,会有两步操作a.将缓存行中的数据回写到系统内存;b.并且写回内存操作会使cpu中其他缓存了该内存地址的数据无效

    当用volatile关键字修饰的变量在被JVM返回成汇编语言时,会生成带有Lock前缀的汇编指令。

    带有LOCK 前缀的汇编指令,在运行的时候,如果是写到缓存,会同时将写动作及时写回到内存;并且同时将其他线程保存到其他缓存单元中的该变量及时修改。这样就保证了多线程在对一个变量的修改时能够保证同步修改,不至于出现一个线程修改变量,导致其他线程因为读取的是其他缓存单元或者从内存直接读而出现的变量修改不同步现象。

0 0
原创粉丝点击