JDK成长记14:(深度好文)你能从3个层面分析volatile底层原理么?(下)

JDK成长记14:(深度好文)你能从3个层面分析volatile底层原理么?(下)

file

上一节我们基本了解Volatile的作用,从JMM层面简单分析了下volatile可见性的实现要求。发现JMM设定了一些操作要求,在这些要求下,可以保证线程间的可见性。可是具体实现是怎么实现的呢?

但是你要想理解这个实现是比较难的,之前提到按照三个层面给大家讲解。如下图所示:

file

其实上一节通过JMM分析volatile是归于JVM层面分析的一部分而已。

你要想完全弄清楚volatile的可见性和有序性,你还要继续分析字节码层面的JVM指令标记是什么?Hotspot实现的JSR内存屏障是什么意思?最终实现的C++代码发出的汇编指令是什么?以及硬件层面如何实现可见性和有序性的?

所以这一节我们来继续研究其余的部分。首先从最简单的一个例子看起,之后手写出一个DCL单例,通过这个例子我们来真正的弄清楚java代码层面到JVM层面再到CPU层面的volatile原理。

让我们开始吧!

从手写一个DCL单例开始分析volatile

从手写一个DCL单例开始分析volatile

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » JDK成长记14:(深度好文)你能从3个层面分析volatile底层原理么?(下)