前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【高级开发进阶】6.3 Volatile关键字

【高级开发进阶】6.3 Volatile关键字

作者头像
Java廖志伟
发布2021-02-02 14:21:57
2290
发布2021-02-02 14:21:57
举报
文章被收录于专栏:高级开发进阶

6.3.1 JMM Volatile 缓存一致性协议

当程序在运行过程中,计算机会将运算需要的数据(变量)从主内存复制一份到CPU高速缓存中,那么CPU进行运算的时候就可以从它的高速缓存读取和写入数据,当运算结束后,再将已经修改后的数据(变量)刷新重新写回到主存当中。这种情况在单线程中运行时没有任何问题的,但是在多线程中运行就会有问题了。

以多核CPU为例,现在有二个线程,一个线程A,一个线程B,主内存中有一个值为1的变量C。这二个线程都要进行赋值加一的操作。线程A从主内存中复制主内存中的变量C,线程B同样的从主内存中复制一份变量C,这个时候二个线程都有一份值为1的变量,同时进行加一的操作。把线程A的最新值2写入到主内存中。此时线程B的高速缓存当中变量C的值还是1,进行加1操作后,变量C的值为2,然后线程B把变量C的值写入主内存。这个时候问题就出现了,二个线程都把相同的值写入到主内存中,导致二次加一的操作变成了一次。

所以就出现了缓存一致性协议,这个协议保证了每个缓存(每个线程的私有的工作空间

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档