ForkJoinPool.commonPool()的线程拒绝策略是什么?

时间:2018-02-01 20:12:44

标签: java threadpool threadpoolexecutor

我的代码中有parallelStreams(),它正在使用ForkJoinPool

线程池执行程序有4个预定义的处理程序策略,我想知道在公共池中使用哪一个作为默认值(如果有的话)。我无法在文档中找到它。

  

在默认的ThreadPoolExecutor.AbortPolicy中,处理程序抛出一个   拒绝后运行时RejectedExecutionException。

     

在ThreadPoolExecutor.CallerRunsPolicy中,调用的线程   执行自己运行任务。这提供了简单的反馈控制   这种机制会降低新任务的提交速度。

     

在ThreadPoolExecutor.DiscardPolicy中,无法执行的任务是   只是放弃了。

     

在ThreadPoolExecutor.DiscardOldestPolicy中,如果执行程序未关闭   down,工作队列头部的任务被删除,然后   重试执行(可能再次失败,导致这种情况发生   重复。)

来自Oracle's documentation

1 个答案:

答案 0 :(得分:1)

来自ForkJoinPool' javadoc

  

此实现拒绝提交的任务(即通过抛出   RejectedExecutionException)仅在关闭或关闭池时   内部资源已经用尽。

这与ThreadPoolExecutor.AbortPolicy的行为相同。