线程池、Future、CompletableFuture和CompletionService这些并发工具都是帮助SE站在任务角度解决并发问题,而非纠结于线程之间协作的细节,比如线程之间如何实现等待、通知。
- 简单并行任务
线程池+Future 组合拳
- 任务间有聚合关系
AND、OR聚合,CompletableFuture 一招鲜
- 批量的并行任务
CompletionService 一把梭
并发编程可分为三个层面问题:分工、协作、互斥。
当关注于任务时,你会发现你的视角已跃出并发编程细节,而使用现实世界思维模式,类比现实世界的分工,其实线程池、Future、CompletableFuture和CompletionService都可列为分工问题。