以下是 java.util.concurrent 包及其子包(如 java.util.concurrent.atomic 和 java.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。FutureTask:RunnableFuture的默认实现。
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+ 版本。实际使用时应根据具体场景选择合适的并发工具(如线程池、并发集合或同步器)。