Files
Knowledge/0 编程/java/JUC 是 Java 并发编程的“武器库”.md

2.2 KiB
Raw Permalink Blame History

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 并发编程的“武器库”,让你安全、高效地编写多线程代码。