上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.6 Java标准库实例
类java.util.concurrent.ThreadPoolExecutor就使用了Two-phase Termination模式来停止其内部维护的工作者线程。当客户端代码调用ThreadPoolExecutor实例的shutdown方法请求其关闭时,ThreadPoolExecutor会先将其运行状态设置为SHUTDOWN。工作者线程的run方法会判断其所属的ThreadPoolExecutor实例的运行状态。若ThreadPoolExecutor实例的运行状态为SHUTDOWN,则工作者线程会一直取工作队列中的任务进行执行,直到工作队列为空时该工作者线程停止。可见,ThreadPoolExecutor实例的停止过程也是分为准备阶段(设置其运行状态为SHUTDOWN)和执行阶段(工作者队列取空工作队列中的任务,然后停止线程)的。