Java中volatile关键字是如何实现可见性和有序性的原理是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计580个文字,预计阅读时间需要3分钟。
一、volatile关键字的意义分析
1.保证可见性:对共享变量的修改,其他线程能够立即知道。
2.保证有序性:防止指令重排,确保操作的顺序执行。
3.volatile的原理和实现机制:有volatile修饰的共享变量,每次读写都会直接操作主存,不依赖于缓存。
二、volatile的关键特性
1.不能保证原子性(如i++操作)。
2.保证有序性。
3.保证可见性。
一、volatile关键字的语义分析
1.保证可见性
对共享变量的修改,其他线程能够马上感知到。但不能保证原子性(i++)
2.保证有序性
3.volatile的原理和实现机制
有volatile修饰的共享变量进行写操作的时候会多出有 “lock”标志的汇编代码,Lock前缀的指令在多核处理器下会引发两件事情:
1)将当前处理器缓存行中的数据写回到系统内存中
2)这个写回内存的操作会使在其他cpu里缓存了该内存地址的数据无效。
本文共计580个文字,预计阅读时间需要3分钟。
一、volatile关键字的意义分析
1.保证可见性:对共享变量的修改,其他线程能够立即知道。
2.保证有序性:防止指令重排,确保操作的顺序执行。
3.volatile的原理和实现机制:有volatile修饰的共享变量,每次读写都会直接操作主存,不依赖于缓存。
二、volatile的关键特性
1.不能保证原子性(如i++操作)。
2.保证有序性。
3.保证可见性。
一、volatile关键字的语义分析
1.保证可见性
对共享变量的修改,其他线程能够马上感知到。但不能保证原子性(i++)
2.保证有序性
3.volatile的原理和实现机制
有volatile修饰的共享变量进行写操作的时候会多出有 “lock”标志的汇编代码,Lock前缀的指令在多核处理器下会引发两件事情:
1)将当前处理器缓存行中的数据写回到系统内存中
2)这个写回内存的操作会使在其他cpu里缓存了该内存地址的数据无效。

