volatile的疑问

《并发编程的艺术》中对volatile读的语义这么描述:
P41:线程从主内存中读取共享变量;
是指线程直接操作主内存?
还是说JMM可以先把主内存的值刷新到本地内存,然后线程再从本地内存中读取?
全部评论
线程都是对工作内存进行操作的。对于主内存和工作内存之间值的传递,volatile有特定的规则,所以让人感觉是直接从主内存中直接取值。
点赞 回复 分享
发布于 2017-08-28 17:52
读的时候会先把自己线程的本地内存设为无效,再从主线程读取值至本地线程,再从本地线程中读取值,线程通过本地内存与进程内存交互。vo内存语义其实就是在重排序中插入了内存屏障保证读写顺序。
点赞 回复 分享
发布于 2017-08-29 12:10
这本书拉入黑名单
点赞 回复 分享
发布于 2017-08-28 19:16
刷新到工作内存吧。。没听说过线程可以直接操作主内存的
点赞 回复 分享
发布于 2017-08-28 17:49
刷新到本地操作
点赞 回复 分享
发布于 2017-08-28 17:48

相关推荐

04-02 16:49
门头沟学院 Java
_bloodstream_:我也面了科大讯飞,主管面的时候听说急招人优先考虑能尽快实习的,我说忙毕设,后面就一直没消息了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务