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 大类:

Redis 高级客户端 Redisson 的使用

前置说明

这篇文章我将重点介绍在实际的业务开发中,我们如何构建一个真正干净的、基于 spring data + redisson 的应用客户端。在此基础上使用 缓存组件限流器组件 看一下 redisson 的相关 API。redis 是集群环境,redisson 和 spring data 也都采用最新的前沿版本。