volatile

Posted jerrice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了volatile相关的知识,希望对你有一定的参考价值。

 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的主要内容,如果未能解决你的问题,请参考以下文章

Java 锁

Java 锁

synchronized和volatile使用

6.并发编程--volatile

C# 特性之volatile

关键字: volatile详解