vault backup: 2026-11-07 16:33:44

This commit is contained in:
cheney
2026-11-07 16:33:55 +08:00
commit 7015312702
1208 changed files with 132432 additions and 0 deletions
@@ -0,0 +1,28 @@
JUC 是 `java.util.concurrent` 包的简称,是 Java 官方提供的用于简化并发编程的工具包。它从 Java 5 开始引入,随后在 Java 7、8 等版本中持续增强,旨在帮助开发者更容易地编写正确、高性能的多线程程序。
### 主要包含的组件:
1. **原子类(Atomic Variables)**
如 `AtomicInteger`、`AtomicLong`、`AtomicReference` 等。利用 CAS(Compare-And-Swap)机制提供线程安全的原子操作,避免了使用重量级锁。
2. **锁(Locks)**
如 `ReentrantLock`、`ReentrantReadWriteLock`、`StampedLock`。相比 `synchronized`,它们提供更灵活的锁获取与释放方式(如可中断、尝试加锁、超时等),并且支持公平锁、条件变量等。
3. **线程池(Executors & Thread Pools)**
包括 `ThreadPoolExecutor`、`ScheduledThreadPoolExecutor` 以及 `Executors` 工厂类。通过复用线程来降低频繁创建/销毁线程的开销,并提供任务队列、拒绝策略等管理能力。
4. **并发集合(Concurrent Collections)**
如 `ConcurrentHashMap`、`CopyOnWriteArrayList`、`BlockingQueue`(`ArrayBlockingQueue`、`LinkedBlockingQueue` 等)。这些集合内部实现了高效的线程同步,避免了外部手动加锁。
5. **同步工具(Synchronizers)**
如 `CountDownLatch`(等待一组线程完成)、`CyclicBarrier`(循环屏障,让多个线程互相等待)、`Semaphore`(信号量,控制并发数量)、`Exchanger`(两个线程交换数据)等。用于协调多个线程之间的协作。
6. **Fork/Join 框架**
用于递归分解大任务,利用工作窃取(work-stealing)算法提高并行计算效率。`ForkJoinPool` 是其核心实现。
### 为什么需要 JUC?
- 传统的 `synchronized`、`wait/notify` 等低层机制使用复杂,容易出错(死锁、性能差等)。
- JUC 提供了经过充分测试、高性能的并发组件,开发者只需关注业务逻辑,无需重复造轮子。
- 极大地提升了高并发场景下的开发效率和程序稳定性。
简单说:**JUC 是 Java 并发编程的“武器库”,让你安全、高效地编写多线程代码。**