前言
在看《Java多线程编程核心技术》的时候,讲到了volatile关键字,又是内存模型,又是可见性的,感觉这个关键字不简单,自己又找了其他资料,果不其然,其背后的隐藏的内容,都可以称得上由volatile引发的血案了。首先看下这个单词的意思,如下图,摘自百度翻译:我是学完了也没理解到这个易变的/不稳定的是怎么体现的,怪不得总是说volatile关键字,而不会说"易变的"关键字,总感觉看到它的中文翻译根本联想不出来这玩意到底是干啥的。
volatile是什么?
volatile是解决多线程同步问题的一个轻量级关键字,它具有以下特性:
- volatile能够保证可见性
- volatile能够保证有序性
- volatile不能保证原子性
这里先给结论,后面将会对每一项都做细致的分析。
关于volatile关键字的分析,主要参考了以下资料:
- 你真的了解volatile关键字吗?
- 周志明《深入理解Java虚拟机:JVM高级特性与最佳实践》第十二章
- 为什么volatile不能保证原子性而Atomic可以?
我主要是做一些总结,然后加入一些自己的思考。