JUC 框架

  1. Lock 锁框架 (Locks)

    • 核心目的: 提供比 synchronized 关键字更灵活、更强大的锁机制,支持更细粒度的锁控制和更高级的同步操作。
    • 核心类:
      • Lock 接口: 定义了锁的基本操作,例如 lock(), unlock(), tryLock() 等。
      • ReentrantLock: 可重入锁,是最常用的 Lock 接口实现,支持公平锁和非公平锁。
      • ReadWriteLock 接口: 读写锁接口,允许多个线程同时读取共享资源,但只允许一个线程写入。
      • ReentrantReadWriteLock: ReadWriteLock 接口的实现类。
      • Condition 接口: 提供了类似于 Objectwait(), notify(), notifyAll() 方法的功能,但与 Lock 锁绑定使用,实现更精细的线程等待和唤醒机制。
    • Executor 框架 (Executors)

    • 核心目的: 用于管理和控制线程池,简化线程的创建、管理和执行,提高线程的重用性和效率。

    • 核心类:
      • Executor 接口: 最基本的执行器接口,定义了 execute(Runnable command) 方法,用于执行 Runnable 任务。
      • ExecutorService 接口: 扩展了 Executor 接口,提供了更丰富的线程池管理功能,例如提交任务、关闭线程池、获取任务执行结果等。
      • ThreadPoolExecutor: 线程池的核心实现类,提供了灵活的线程池配置和管理选项。
      • ScheduledExecutorService 接口: 扩展了 ExecutorService 接口,用于支持定时任务和周期性任务的执行。
      • ScheduledThreadPoolExecutor: ScheduledExecutorService 接口的实现类。
      • Executors 工具类: 提供了创建各种常用线程池的静态工厂方法,例如 newFixedThreadPool(), newCachedThreadPool(), newSingleThreadExecutor(), newScheduledThreadPool() 等。
    • Atomic 类 (Atomics)

    • 核心目的: 提供了一组原子操作类,用于实现无锁的线程安全编程,高效地进行原子更新操作。

    • 核心类:
      • AtomicInteger: 原子整型类。
      • AtomicLong: 原子长整型类。
      • AtomicBoolean: 原子布尔型类。
      • AtomicReference: 原子引用类型类。
      • AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray: 原子数组类。
      • AtomicIntegerFieldUpdaterAtomicLongFieldUpdaterAtomicReferenceFieldUpdater: 原子字段更新器,用于原子地更新对象的字段。
    • 并发集合 (Collections)

    • 核心目的: 提供了一系列线程安全的集合类,用于在多线程环境下安全地操作集合数据,替代非线程安全的 java.util 包下的集合类。

    • 核心类:
      • ConcurrentHashMap: 线程安全的哈希表,高并发场景下性能优于 HashtablesynchronizedHashMap
      • ConcurrentSkipListMapConcurrentSkipListSet: 基于跳表的线程安全有序集合。
      • CopyOnWriteArrayListCopyOnWriteArraySet: 写时复制的线程安全集合,读操作无锁,写操作复制数组,适用于读多写少的场景。
      • BlockingQueue 接口: 阻塞队列接口,支持在队列为空时阻塞获取元素的操作,以及队列满时阻塞插入元素的操作。
      • ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueDelayQueueSynchronousQueueLinkedTransferQueue: BlockingQueue 接口的各种实现类,适用于不同的场景。
      • ConcurrentLinkedQueue: 基于链表的无界非阻塞队列。
    • 工具类 (Tools/Utilities)

    • 核心目的: 提供了一系列用于构建更复杂并发程序的工具类,实现线程间的协作和同步。

    • 核心类:
      • Semaphore: 信号量,用于控制对共享资源的访问线程数量,实现限流。
      • CountDownLatch: 倒计数器,用于等待一组线程完成操作后,再继续执行后续操作。
      • CyclicBarrier: 循环栅栏,允许多个线程在某个点上同步等待,当所有线程都到达栅栏时,再一起继续执行。
      • Phaser: 更灵活的同步工具,可以动态地调整参与同步的线程数量,并支持分阶段同步。
      • Exchanger: 用于在两个线程之间交换数据的工具。
      • ForkJoinPoolForkJoinTask: 用于支持任务分解和并行执行的框架,适用于计算密集型任务。

基础且非常核心的类

  • Lock 接口 和 ReentrantLock: Lock 接口是锁框架的基础,而 ReentrantLock 是最常用和最典型的 Lock 实现,理解 LockReentrantLock 对于掌握 JUC 锁机制至关重要。
  • ExecutorService 接口 和 ThreadPoolExecutor: ExecutorService 是线程池框架的核心接口,ThreadPoolExecutor 是最核心和最灵活的线程池实现,理解线程池对于高效并发编程至关重要。
  • AtomicInteger: 原子类是实现无锁并发编程的基础,AtomicInteger 是最简单和最常用的原子类,理解原子类对于理解无锁并发机制很有帮助。
  • ConcurrentHashMap: 并发集合中最具代表性的类,是高并发场景下替代 HashMap 的首选,理解并发集合对于构建高并发应用至关重要。