本文介绍了Executor框架,框架采用了任务提交、执行的解耦方案。为了让该方案适配不同场景,需要将多种因素考虑进执行策略中。不同的执行策略也衍生出不同的线程池,我们在使用前需要分析真实环境去选择适当的线程池。线程池异步执行多个任务,导致任务可能处于不同的状态。为了管理整个线程池的生命周期,ExecutorService提供了多种方法,一般采取awaitTermination、shutdown组合使用的方式,达到同步关闭的效果。最后,本文介绍了ScheduledThreadPool在延迟任务、周期任务的优越性,如果构建调度服务,可以采用DelayQueue。