线程池
拒绝策略
线程池的拒绝策略,即任务被添加到线程池中被拒绝而采取的处理措施。
任务被拒绝的原因可能有:
- 线程池异常关闭;
- 任务数量超过线程池的最大限制。
线程池中内置4种拒绝策略,分别为4个公共静态内部类。
-
AbortPolicy
:当任务添加到线程池中被拒绝时,它将抛出RejectedExecutionException
异常。 -
CallerRunsPolicy
:当任务添加到线程池中被拒绝时,判断当前线程池是否关闭,关闭则放弃任务,反之则直接执行任务。 -
DiscardOldestPolicy
:当任务添加到线程池中被拒绝时,线程池会放弃等待队列中最旧的未处理任务,然后将被拒绝的任务添加到等待队列中;如果线程池被关闭则直接放弃任务。 -
DiscardPolicy
:当任务添加到线程池中被拒绝时,线程池将丢弃被拒绝的任务。
其中AbortPolicy
是线程池默认的拒绝策略
- 自定义拒绝策略
实现RejectedExecutionHandler
接口,在使用ThreadPoolExecutor
创建线程池时,将实现类的对象作为参数传递。
网友评论