第6章 任务执行
文章目录
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等方法获得已完成的结果