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