=Volatile= 原理剖析
近期突然对 java
的部分原理起了兴趣。
作为一个工程师,一直都没有系统去学习过 java
相关深入的知识, 了解全部来源于工作中遇到的问题和解决的问题。
比如多线程,锁,gc,jvm,遇到过的一些问题有了解能解决,但是不够系统,一旦深入追究下去,就出现了明显的不足。
所以,花了半天看了一半的<深入理解 java 虚拟机>, 补全一下相关知识。
正好遇到 violate 这个概念,凭借自己对整体体系的认知,梳理一下 volatile
到底是什么。
文章分为五部分,分别为:
- 要解决的问题
- 背景知识
- 分析
- 解析和结论
- 如何验证
PS: 下一个想要深入的话题, 无锁技术
, actor 模型
, 自旋锁忙等
等技术的异同分析。
要解决的问题
- (jvm) 寄存器访问优化
- 工作内存
- cpu 高速缓存
- jmm 和实际 cpu 架构下的集成,比如 x86-64
- 内存屏障