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

相关推荐

02-22 21:16
已编辑
门头沟学院 运营
牛客928043833号:离了你谁还拿我当个宝
点赞 评论 收藏
分享
04-06 11:24
已编辑
太原学院 测试工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务