page contents

volatile 变量是什么?volatile 变量和 atomic 变量有什么不同?

轩辕小不懂 发布于 2022-04-15 14:52
阅读 768
收藏 0
分类:Java开发
3477
Nen
Nen
- 程序员

volatile 则是保证了所修饰的变量的可见。因为 volatile 只是在保证了同一个变量在多线程中的可见性,所以它更多是用于修饰作为开关状态的变量,即 Boolean 类型的变量。

volatile 多用于修饰类似开关类型的变量、Atomic 多用于类似计数器相关的变量、其它多线程并发操作用 synchronized 关键字修饰。

volatile 有两个功用:

这个变量不会在多个线程中存在复本,直接从内存读取。

这个关键字会禁止指令重排序优化。也就是说,在 volatile 变量的赋值操作后面会有一个内存屏障(生成的汇编代码上),读操作不会被重排序到内存屏障之前。

请先 登录 后评论