了解下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

posted @ 2020-09-03 10:44  小窝蜗  阅读(188)  评论(0)    收藏  举报