码迷,mamicode.com
首页 > 其他好文 > 详细

volatile

时间:2017-08-02 23:21:57      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:table   tle   vol   idt   编译器   span   image   编译   page   

 volatile写的内存语义:
当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值刷新到主内存。
volatile读的内存语义:
当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。
 
重排序:
能否重排序 第二个操作
第一个操作 普通读/写 volatile读 volatile写
普通读/写     NO
volatile读 NO NO NO
volatile写   NO NO
当第二个操作是volatile写时,不管第一个操作是什么,都不能重排序。这个规则确保volatile写之前的操作不会被编译器重排序到volatile写之后
 当第一个操作是volatile读时,不管第二个操作是什么,都不能重排序。这个规则确保volatile读之后的操作不会被编译器重排序到volatile读之前
当第一个操作是volatile写,第二个操作是volatile读时,不能重排序。
 技术分享

技术分享

技术分享

 

 

volatile

标签:table   tle   vol   idt   编译器   span   image   编译   page   

原文地址:http://www.cnblogs.com/jerrice/p/7276942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!