volatile 关键字笔记

你应该知道的 volatile 关键字

当一个变量被 volatile 修饰时,任何线程对它的写操作都会立即刷新到主内存中,并且会强制让缓存了该变量的线程中的数据清空,必须从主内存重新读取最新数据。
volatile 修饰之后并不是让线程直接从主内存中获取数据,依然需要将变量拷贝到工作内存中。

但这里有个误区,这样的使用方式容易给人的感觉是:
对 volatile 修饰的变量进行并发操作是线程安全的。
这里要重点强调,volatile 并不能保证线程安全性!

内存可见性只是 volatile 的其中一个语义,它还可以防止 JVM 进行指令重排优化。

posted @ 2018-07-17 18:49  ACBingo  阅读(76)  评论(0编辑  收藏  举报