Are you an LLM? You can read better optimized documentation at /java/JUC.md for this page in Markdown format
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, AtomicLongAtomicReference, AtomicMarkableReferenceAtomicIntegerFieldUpdater, AtomicLongFieldUpdaterStriped64, Unsafe 等底层实现
十一、锁机制(locks 子包)
位于 locks/ 子目录下,提供高级锁功能:
Lock - 基本锁接口ReentrantLock - 可重入锁ReadWriteLock - 读写锁接口ReentrantReadWriteLock - 可重入读写锁StampedLock - 戳记锁(读优先)Condition - 与锁配合使用的条件变量
十二、其他工具类
| 类 | 说明 |
|---|
ThreadFactory | 创建新线程的工厂 |
RejectedExecutionHandler | 拒绝策略处理器 |
Joiners | Joiner 工具类 |
Helpers | 辅助方法 |
核心特性总结
- 线程安全:所有并发容器都保证多线程访问的安全性
- 非阻塞算法:大量使用 CAS(Compare-And-Swap)和无锁算法
- 可配置性:线程池大小、队列容量、拒绝策略等均可配置
- 灵活调度:支持定时、周期性任务调度
- 组合能力:CompletableFuture 支持复杂的异步组合
- 结构化并发:Java 21+ 引入结构化并发,简化错误处理和资源管理
生成时间:2026-08-04