=Volatile= 原理剖析

近期突然对 java 的部分原理起了兴趣。

作为一个工程师,一直都没有系统去学习过 java 相关深入的知识, 了解全部来源于工作中遇到的问题和解决的问题。

比如多线程,锁,gc,jvm,遇到过的一些问题有了解能解决,但是不够系统,一旦深入追究下去,就出现了明显的不足。

所以,花了半天看了一半的<深入理解 java 虚拟机>, 补全一下相关知识。

正好遇到 violate 这个概念,凭借自己对整体体系的认知,梳理一下 volatile 到底是什么。

文章分为五部分,分别为:

  1. 要解决的问题
  2. 背景知识
  3. 分析
  4. 解析和结论
  5. 如何验证

PS: 下一个想要深入的话题, 无锁技术 , actor 模型 , 自旋锁忙等 等技术的异同分析。

要解决的问题

  • (jvm) 寄存器访问优化
  • 工作内存
  • cpu 高速缓存
  • jmm 和实际 cpu 架构下的集成,比如 x86-64
  • 内存屏障