1、ThreadPoolExecutor的设计是可扩展的,它提供了几个钩子让子类去覆写
1)beforeExecute和afterExecutor:可有它们来进行信息收集。无论任务是正常地从run中返回,还是抛出一个异常,afterExecutor都会被调用。如果任务完成后抛出一个error,则afterExecute不会被调用。如果beforeExecute抛出一个RuntimeException,任务将不被执行,afterExecute也不会被调用。
2)terminated钩子会在线程池完成关闭动作后调用,也就是当所有任务都已完成并县城所有工作者线程也已经关闭后,会执行terminated。terminated释放Executor在生命周期内分配到的资源,还可以发出通知、记录日志或完成统计信息。