6.1 在线程中执行任务

6.1.1 串行地执行任务

6.1.2 显式地为任务创建线程

6.1.3 无限制创建线程的不足

  • 线程生命周期的开销非常高
  • 资源消耗
  • 稳定性

6.2 Executor框架

基于生产者 - 消费者模式

6.2.2 执行策略

6.2.3 线程池

通过调用Executors静态工厂方法创建线程池:

  • newFixedThreadPool。固定长度的线程池,每提交任务时创建,直到最大数量
  • newCachedThreadPool。可缓存线程池,线程池规模超过需求时回收,需求增加时添加线程,线程池规模无限制
  • newSingleThreadExecutor。单线程。确保任务在队列中顺序串行执行
  • newScheduledThreadPool。固定长度线程池,延迟或定时方式执行

6.2.4 Executor的生命周期

6.2.5 延迟任务与周期任务

6.3 找出可利用的并行性

6.3.2 携带结果的任务Callable与Future

  • Callable:抽象的计算任务
  • Future:任务的生命周期,提供方法判断是否完成或取消,获取任务的结果和取消任务等

6.3.4 在异构任务并行化中存在的局限

6.3.5 CompletionService:Executor与BlockingQueue

将Callable任务提交给它执行,使用类似队列操作的take和poll等方法获得已完成的结果

6.3.7 为任务设置时限