了解下JUC的线程池学习十二(reject方法源码分析)
1.方法
reject(Runnable command)方法很简单:
final void reject(Runnable command) {
handler.rejectedExecution(command, this);
}
调用线程池持有的成员RejectedExecutionHandler实例回调任务实例和当前线程池实例。
2.钩子方法分析
到JDK11为止,ThreadPoolExecutor提供的钩子方法没有增加,有以下几个:
beforeExecute(Thread t, Runnable r):任务对象Runnable#run()执行之前触发回调。
afterExecute(Runnable r, Throwable t):任务对象Runnable#run()执行之后
(包括异常完成情况和正常完成情况)触发回调。
terminated():线程池关闭的时候,状态更变为TIDYING成功之后会回调此方法,
执行此方法完毕后,线程池状态会更新为TERMINATED。
onShutdown():shutdown()方法执行时候会回调此方法,API注释中提到此方法
主要提供给ScheduledThreadPoolExecutor使用。
其中onShutdown()的方法修饰符为default,其他三个方法的修饰符为protected,
必要时候可以自行扩展这些方法,可以实现监控、基于特定时机触发具体操作等等。
学习来源:https://www.cnblogs.com/throwable/p/13574306.html

浙公网安备 33010602011771号