2024-08-04
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1846506907

回答

线程池的拒绝策略是任务在提交给线程池时,线程池无法接受新任务的情况下执行的处理策略。目前线程池内置了四种拒绝策略。

一、AbortPolicy

默认的拒绝策略。抛出异常,中止任务。如果任务无法提交到线程池时会抛出 RejectedExecutionException,我们需要处理好该异常,否则会影响后续任务的执行。

二、CallerRunsPolicy

该策略不会丢弃任务,只要线程池没有关闭的话,则使用提交任务的线程来执行这个任务。它一般适用于并发量比较小,对任务执行时间要求不严格的场景。

但是,由于是调用者自身执行任务,如果任务提交速度过快,可能导致程序阻塞,性能效率上必然的损失较大。

三、DiscardPolicy

直接丢弃,不做任何处理,但是不会抛出异常。该策略适用于可以容忍任务丢失的场景。不会对提交任务的线程产生任何影响。