JUC AQS 及显式锁与同步器

在 Java 1.5 之前,开发者处理并发同步的唯一武器是 synchronized 关键字。虽然它简单、安全,且随着 JVM 的优化(偏向锁、轻量级锁等)在性能上已表现出色,但它本质上是一辆 “自动挡汽车”:虽然好开,却无法实现精准的制动、复杂的坡道起步或是极速下的换挡操控。

随着业务场景复杂度的飙升——我们需要锁的公平性、需要超时放弃机制、需要可中断的等待,以及在海量读取场景下实现更细粒度的读写分离。于是,java.util.concurrent.locks 体系应运而生。

JUC常用类之任务和线程池相关

相关类的概述

在早期的 Java 并发编程中,我们习惯于直接使用 Thread 和 synchronized。但在现代高并发、高可用的互联网环境下,这种 “小作坊” 式的并发处理逻辑已无法应对。JUC 执行框架的出现,本质上是将任务的提交与执行的机制彻底解耦。


JUC包概览以及它和并发关键字们的比较

JUC包概览

在 Java 17 及其后续版本中,java.util.concurrent (JUC) 及其子包(atomic、locks)包含的类、接口、枚举和异常总数大约在 70 到 100 个 之间。这个包的设计非常精妙,可以被视作一个从 “硬件原子操作” 到 “高级应用框架” 的完整塔式结构。为了方便理解,我们可以将其大致分为以下 6 大类:

K8s 集群的安装 - 使用二进制文件的方式进行进群的安装

选择二进制纯手工搭建(俗称硬核二进制苦行僧模式),意味着我们将彻底剥离 kubeadm 的黑盒封装,直接与 K8s 的底层内核组件和各种 CA 证书打交道。在这种模式下,我们会对集群的每一颗螺丝钉(组件启动参数、证书签发、网络拓扑)拥有绝对的掌控权。离线环境下,这种方式虽然极为繁琐,但极其稳定,且排查问题直击本质。