---
url: /java/JUC.md
---
# Java Util Concurrent (JUC) 包总结

## 概述

`java.util.concurrent` 包提供了用于处理线程同步和并发任务的工具类，是 Java 并发编程的核心 API。

***

## 一、Executor 框架（执行器）

### 核心接口/类

| 类/接口 | 说明 |
|---------|------|
| `Executor` | 最简单的任务执行接口 |
| `ExecutorService` | 管理生命周期可执行异步任务的执行器 |
| `ScheduledExecutorService` | 支持定时/周期性任务调度的执行器 |
| `ThreadPoolExecutor` | 基于线程池的执行器实现 |
| `ScheduledThreadPoolExecutor` | 定时任务线程池实现 |
| `Executors` | 创建各种标准线程池的工具类 |
| `AbstractExecutorService` | ExecutorService 的抽象基类 |

### 任务相关

| 类/接口 | 说明 |
|---------|------|
| `Runnable` | 可运行任务接口 |
| `Callable` | 可返回结果的任务接口 |
| `Future` | 表示异步计算结果的接口 |
| `FutureTask` | Future 的可取消异步任务实现 |
| `CompletionService` | 管理已完成任务的执行服务 |
| `ExecutorCompletionService` | CompletionService 的实现 |

### 异常类

* `ExecutionException` - 执行任务时抛出异常
* `CancellationException` - 任务被取消时抛出
* `RejectedExecutionException` - 任务被拒绝执行时抛出

***

## 二、阻塞队列（Blocking Queue）

### 核心接口

| 接口 | 说明 |
|------|------|
| `BlockingQueue` | 支持等待操作的队列 |
| `BlockingDeque` | 双端阻塞队列 |
| `TransferQueue` | 特殊的阻塞队列（生产者消费者模式） |
| `SynchronousQueue` | 每个插入操作必须等到另一个线程才会被消费的队列 |

### 具体实现

| 类 | 说明 |
|----|------|
| `ArrayBlockingQueue` | 有界数组实现的阻塞队列 |
| `LinkedBlockingQueue` | 可选边界的链表实现的阻塞队列 |
| `LinkedBlockingDeque` | 可选边界的链表实现的双端阻塞队列 |
| `PriorityBlockingQueue` | 无界优先级队列 |
| `DelayQueue` | 带延迟时间的元素队列 |
| `LinkedTransferQueue` | 由链表组成的有界队列 |
| `CopyOnWriteArrayList` | 写时复制的线程安全列表（用作队列） |

***

## 三、并发容器

### Map 类型

| 类 | 说明 |
|----|------|
| `ConcurrentHashMap` | 高并发场景下的 HashMap 实现，分段锁/CAS+synchronized |
| `ConcurrentSkipListMap` | 跳表实现的有序并发 Map |
| `ConcurrentNavigableMap` | NavigableMap 的并发版本接口 |

### Queue/Deque 类型

| 类 | 说明 |
|----|------|
| `ConcurrentLinkedQueue` | 非阻塞的链接队列（CAS 实现） |
| `ConcurrentLinkedDeque` | 非阻塞的双端队列 |
| `ConcurrentSkipListSet` | 跳表实现的有序并发 Set |

### 其他

| 类 | 说明 |
|----|------|
| `CopyOnWriteArrayList` | 读写分离的线程安全 List |
| `CopyOnWriteArraySet` | 基于 CopyOnWriteArrayList 的 Set |
| `Exchanger` | 两个线程间交换数据的点 |

***

## 四、同步辅助类（Synchronizers）

### CountDownLatch / CyclicBarrier

| 类 | 说明 |
|----|------|
| `CountDownLatch` | 计数器门闩，一个或多个线程等待其他线程完成 |
| `CyclicBarrier` | 循环屏障，多个线程互相等待达到共同点 |
| `Phaser` | 可动态调整阶段的屏障 |

### Semaphore

| 类 | 说明 |
|----|------|
| `Semaphore` | 信号量，控制同时访问资源的线程数量 |

### DelayQueue/Delayed

| 类/接口 | 说明 |
|---------|------|
| `Delayed` | 表示延迟对象的接口 |
| `DelayQueue` | 存储 Delayed 元素的无界阻塞队列 |

### CountedCompleter

| 类 | 说明 |
|----|------|
| `CountedCompleter` | 完成动作后触发其他完成的任务 |

***

## 五、Fork/Join 框架

| 类 | 说明 |
|----|------|
| `ForkJoinPool` | 支持工作窃取算法的 Fork/Join 执行器 |
| `ForkJoinTask` | Fork/Join 池中执行的基本任务类 |
| `RecursiveTask` | 返回结果的递归任务 |
| `RecursiveAction` | 不返回结果的递归任务 |
| `ForkJoinWorkerThread` | Fork/Join 框架的工作线程 |
| `CountedCompleter` | 计数完成器，完成任务后可触发其他任务 |
| `CompletionException` | 完成操作抛出的异常 |

***

## 六、CompletableFuture（异步编程）

| 类/接口 | 说明 |
|---------|------|
| `CompletableFuture` | 支持异步组合的 Future 实现 |
| `CompletionStage` | 描述逐步异步计算的接口 |

***

## 七、Structured Concurrency（结构化并发，Java 21+）

| 类 | 说明 |
|----|------|
| `StructuredTaskScope` | 结构化并发作用域，自动管理和合并子任务 |
| `StructuredTaskScopeImpl` | 内部实现类 |
| `ThreadPerTaskExecutor` | 为每个任务创建新线程的执行器 |
| `Flow` | Reactive Streams API 实现 |

***

## 八、发布订阅模式

| 类 | 说明 |
|----|------|
| `SubmissionPublisher` | 实现 Reactive Streams Publisher 的类 |

***

## 九、时间单元与异常

| 类 | 说明 |
|----|------|
| `TimeUnit` | 时间单位枚举，支持时间转换 |
| `TimeoutException` | 超时异常 |
| `BrokenBarrierException` | 屏障破裂异常 |
| `StructureViolationException` | 结构违规异常 |

***

## 十、原子变量（atomic 子包）

位于 `atomic/` 子目录下，提供 CAS 原子操作：

* `AtomicBoolean`, `AtomicInteger`, `AtomicLong`
* `AtomicReference`, `AtomicMarkableReference`
* `AtomicIntegerFieldUpdater`, `AtomicLongFieldUpdater`
* `Striped64`, `Unsafe` 等底层实现

***

## 十一、锁机制（locks 子包）

位于 `locks/` 子目录下，提供高级锁功能：

* `Lock` - 基本锁接口
* `ReentrantLock` - 可重入锁
* `ReadWriteLock` - 读写锁接口
* `ReentrantReadWriteLock` - 可重入读写锁
* `StampedLock` - 戳记锁（读优先）
* `Condition` - 与锁配合使用的条件变量

***

## 十二、其他工具类

| 类 | 说明 |
|----|------|
| `ThreadFactory` | 创建新线程的工厂 |
| `RejectedExecutionHandler` | 拒绝策略处理器 |
| `Joiners` | Joiner 工具类 |
| `Helpers` | 辅助方法 |

***

## 核心特性总结

1. **线程安全**：所有并发容器都保证多线程访问的安全性
2. **非阻塞算法**：大量使用 CAS（Compare-And-Swap）和无锁算法
3. **可配置性**：线程池大小、队列容量、拒绝策略等均可配置
4. **灵活调度**：支持定时、周期性任务调度
5. **组合能力**：CompletableFuture 支持复杂的异步组合
6. **结构化并发**：Java 21+ 引入结构化并发，简化错误处理和资源管理

***

*生成时间：2026-08-04*
