如果读者是Java领域的开发人员,在研究Java底层逻辑的时候一定离不开源码分析。以研究CAS为例,其底层实现来自Unsafe类中的<code>public final native boolean compareAndSetInt</code>方法,这里使用native显然是因为Java层面已经满足不了来自开发者需要操作计算机底层的需求了。而这种使用native本地方法来间接调用计算机底层实现的过程被称为JNI技术(Java Native Interface,Java本地接口)。
在Java中,volatile用于标记变量,而内存屏障又是volatile的底层实现。它们是Java中最基础也是最简单的两个概念,它们的出现使得开发者在多线程环境下能够保证更好的数据一致性和程序执行的正确性。volatile简单、轻量,相比于其他方式,如synchronized或直接加锁,有着更好的性能。能让开发者少些对锁的忧虑,多一些对实际问题的关注。
CAS(Compare And Swap)比较并交换是JUC并发编程中最为重要的一个工具。它在处理并发问题时提供了一个非阻塞的解决方案,引入了一种全新的并发编程思维——乐观锁。这种思想预设所有线程在执行过程中都不会发生冲突,每一个线程都会乐观地认为自己能够成功执行,从而大大降低了线程之间的等待和阻塞,极大地提高了系统的并发性能。
Java词法树(语法树)这种树形结构是Java源码的一种抽象表示,它以图形化的方式反映出代码的语法结构,从而帮助开发者更好地理解和解析程序的语义。<br>
每个树节点代表源代码中的一个构造或表达式(声明、循环、条件判断等)。根据这些节点以及它们之间的关系,可以详细地解析出代码的执行逻辑。这对于程序的优化、重构、测试等许多领域都有着至关重要的影响。
JDK(Java Development Kit)作为Java的核心开发工具包,其包含了许多Java开发者们日常所需的工具,比如编译器、运行时环境以及各种基础的类库。
<br>
深入探索JDK的源码,并尝试自己编译JDK似乎是更有效的了解Java的途径之一。在本章中,我将详细介绍我在Linux、MacOS和Windows平台上编译JDK17u的过程和遇到的问题。