18. volatile关键字

volatile关键字表示被修饰的变量容易变化

volatile关键字修饰的变量读、写操作都会从高速缓存或主内存中读取,来获取变量的相对新值

volatile关键字不会引起上下文切换,故也被成为轻量级锁

原理

读操作
写操作

volatile的作用

  • 保障可见性
  • 保障有序性
  • 保障写操作的原子性
  • 保障long/double型变量的写操作的原子性

不表示赋值操作具有原子性

image.png

volatile写操作

写操作
image.png
image.png

volatile读操作

读操作
image.png
image.png

volatile禁止重排序总结

  • 写volatile变量操作与该操作之前的任何读、写操作不会被重排序
  • 读volatile变量操作与该操作之后的任何读、写操作不会被重排序
image.png

volatile变量的开销

读、写都不会导致上下文切换,所以开销比较小

image.png

volatile应用场景

image.png
image.png
image.png
image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容