关键字volatile

Posted shipengda

tags:

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

Volatile 字面的意思时易变的,不稳定的。在C#中也差不多可以这样理解。

编译器在优化代码时,可能会把经常用到的代码存在Cache里面,然后下一次调用就直接读取Cache而不是内存,这样就大大提高了效率。但是问题也随之而来了。

在多线程程序中,如果把一个变量放入Cache后,又有其他线程改变了变量的值,那么本线程是无法知道这个变化的。它可能会直接读Cache里的数据。但是很不幸,Cache里的数据已经过期了,读出来的是不合时宜的脏数据。这时就会出现bug。

用Volatile声明变量可以解决这个问题。用Volatile声明的变量就相当于告诉编译器,我不要把这个变量写Cache,因为这个变量是可能发生改变的。

以上是关于关键字volatile的主要内容,如果未能解决你的问题,请参考以下文章

24.volatile关键字的作用volatile原理可见性内存屏障volatile性能transient

java里volatile关键字有啥特性?

并发之volatile关键字

C语言 中volatile关键字的用法

Volatile关键字

volatile关键字