NEWS | 任何关于 Gravity 主题的问题,您可以加入讨论群 776203334

编排并发与响应式

Java的并发编程是深奥而巧妙的,结构化并发和编排并发都属于并发编程的任何一个领域中的模型与技术。结构化并发主要关注如何更安全、更清晰地组织和管理并发的活动,比如线程或任务,使得它们的生命周期更易于理解和控制。编排并发主要关注如何更方便地描述和管理并发操作的顺序和依赖性。本期主要介绍编排并发以及与之相关的响应式编程初步内容。

JNI与C混合开发

如果读者是Java领域的开发人员,在研究Java底层逻辑的时候一定离不开源码分析。以研究CAS为例,其底层实现来自Unsafe类中的public final native boolean compareAndSetInt方法,这里使用native显然是因为Java层面已经满足不了来自开发者需要操作计算机底层的需求了。而这种使用native本地方法来间接调用计算机底层实现的过程被称为JNI技术(Java Native Interface,Java本地接口)。

synchronized锁升级

synchronized在JVM底层是一项非常复杂的技术,涉及了非常多的内容,包括但不局限于:对象头、偏向锁、轻量级锁、重量级锁、锁偏向、锁膨胀、锁撤销、CAS、安全点等技术,并且这些技术在JDK不同版本中的实现也大相径庭。

volatile与内存屏障

在Java中,volatile用于标记变量,而内存屏障又是volatile的底层实现。它们是Java中最基础也是最简单的两个概念,它们的出现使得开发者在多线程环境下能够保证更好的数据一致性和程序执行的正确性。volatile简单、轻量,相比于其他方式,如synchronized或直接加锁,有着更好的性能。能让开发者少些对锁的忧虑,多一些对实际问题的关注。

Synchronized锁升级底层原理

synchronized是一种用于修饰同步代码块或方法的关键字。当一个线程进入被synchronized修饰的代码块或方法时,会先尝试获取括号中对象(对于同步方法则是当前类的实例)的对象锁。在JDK 1.6及之后的版本,synchronized锁具有锁升级的机制,分为偏向锁、轻量级锁和重量级锁。

CAS自旋锁的底层原理

CAS(Compare And Swap)比较并交换是JUC并发编程中最为重要的一个工具。它在处理并发问题时提供了一个非阻塞的解决方案,引入了一种全新的并发编程思维——乐观锁。这种思想预设所有线程在执行过程中都不会发生冲突,每一个线程都会乐观地认为自己能够成功执行,从而大大降低了线程之间的等待和阻塞,极大地提高了系统的并发性能。

JDK编译原理

JDK(Java Development Kit)作为Java的核心开发工具包,其包含了许多Java开发者们日常所需的工具,比如编译器、运行时环境以及各种基础的类库。然而,对于大多数开发者来说,JDK可能只是一个黑盒工具。所有编写的Java代码最终都会被JDK转化为可执行的程序,但是JDK内部的工作原理可能对于大部分开发者来说仍然理解困难。

JDK词法树原理

截止2023年5月18日,Oracle、Azul等公司或是一些博客都未对JCTree、Tokens、Token、TokenKind等做出过详细的介绍和解释。因为它们属于javac编译器的内部实现细节,而非Java公开的API。以下的内容都是博主通过阅读源码和阅读零散的其他博客的文章总结的,如若读者感兴趣,最直接的途径可能就是阅读 javac 的源代码,或者查找一些关于 Java 编译器实现的教材或论文。您也可以在评论区为我指正或提供更详细的信息,这将使得这篇文章更加完善。