分类总结java.util.concurrent包下各个类文件

150 阅读2分钟

以下是 java.util.concurrent 包及其子包(如 java.util.concurrent.atomicjava.util.concurrent.locks)中核心类和接口的分类整理:


1. 执行器框架(线程池)

接口

  • Executor:定义任务执行的抽象。
  • ExecutorService:扩展 Executor,提供任务生命周期管理。
  • ScheduledExecutorService:支持定时或周期性任务调度。

实现类

  • ThreadPoolExecutor:经典线程池实现。
  • ScheduledThreadPoolExecutor:支持定时任务的线程池。
  • ForkJoinPool(属于 Fork/Join 框架):分治任务的线程池。

2. 并发集合(线程安全的集合类)

队列(Queue)

  • BlockingQueue(接口):阻塞队列。
    • ArrayBlockingQueue:基于数组的阻塞队列。
    • LinkedBlockingQueue:基于链表的阻塞队列。
    • PriorityBlockingQueue:支持优先级的阻塞队列。
    • SynchronousQueue:无缓冲的阻塞队列。
    • DelayQueue:元素按延迟时间排序的阻塞队列。

双端队列(Deque)

  • BlockingDeque(接口):阻塞双端队列。
    • LinkedBlockingDeque:基于链表的实现。

映射(Map)

  • ConcurrentMap(接口):线程安全的 Map。
    • ConcurrentHashMap:高并发哈希表实现。
  • ConcurrentSkipListMap:基于跳表的并发有序 Map。

列表(List)

  • CopyOnWriteArrayList:写时复制的线程安全列表。

集合(Set)

  • CopyOnWriteArraySet:基于 CopyOnWriteArrayList 的线程安全集合。
  • ConcurrentSkipListSet:基于跳表的并发有序集合。

3. 同步器(Synchronizers)

核心类

  • CountDownLatch:倒计时门闩,等待一组操作完成。
  • CyclicBarrier:可重复使用的屏障,等待线程到达。
  • Semaphore:信号量,控制资源访问的并发数。
  • Phaser:更灵活的阶段性同步器(Java 7+)。
  • Exchanger:线程间交换数据的同步点。

4. 原子类(Atomic Classes)

位于子包 java.util.concurrent.atomic

  • 基本类型原子类:
    • AtomicInteger, AtomicLong, AtomicBoolean
  • 引用类型原子类:
    • AtomicReference, AtomicStampedReference, AtomicMarkableReference
  • 数组原子类:
    • AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray
  • 字段更新器:
    • AtomicIntegerFieldUpdater, AtomicLongFieldUpdater, AtomicReferenceFieldUpdater
  • 高性能计数器(Java 8+):
    • LongAdder, DoubleAdder, LongAccumulator, DoubleAccumulator

5. 锁(Locks)

位于子包 java.util.concurrent.locks接口

  • Lock:显式锁接口。
  • ReadWriteLock:读写锁接口。

实现类

  • ReentrantLock:可重入锁。
  • ReentrantReadWriteLock:可重入读写锁。
  • StampedLock(Java 8+):基于戳记的乐观读写锁。

支持类

  • Condition:与锁绑定的条件对象。

6. Future 与异步结果

接口

  • Future:表示异步计算结果。
  • RunnableFuture:可运行的 Future
    • FutureTaskRunnableFuture 的默认实现。
  • CompletableFuture(Java 8+):支持链式异步编程的 Future。

7. Fork/Join 框架

核心类

  • ForkJoinPool:分治任务的线程池。
  • ForkJoinTask:分治任务的抽象基类。
    • RecursiveAction:无返回值的递归任务。
    • RecursiveTask:有返回值的递归任务。

8. 时间工具

  • TimeUnit:枚举类,定义时间单位(如毫秒、纳秒)。

9. 其他工具类

  • ThreadLocalRandom(Java 7+):线程安全的随机数生成器。
  • Executors:工厂类,用于创建线程池。
  • CompletionService:解耦任务提交与结果获取。
    • ExecutorCompletionService:默认实现。

总结

以上分类覆盖了 java.util.concurrent 包及其子包的核心内容,适用于 Java 8+ 版本。实际使用时应根据具体场景选择合适的并发工具(如线程池、并发集合或同步器)。