我的代码中有parallelStreams()
,它正在使用ForkJoinPool。
线程池执行程序有4个预定义的处理程序策略,我想知道在公共池中使用哪一个作为默认值(如果有的话)。我无法在文档中找到它。
在默认的ThreadPoolExecutor.AbortPolicy中,处理程序抛出一个 拒绝后运行时RejectedExecutionException。
在ThreadPoolExecutor.CallerRunsPolicy中,调用的线程 执行自己运行任务。这提供了简单的反馈控制 这种机制会降低新任务的提交速度。
在ThreadPoolExecutor.DiscardPolicy中,无法执行的任务是 只是放弃了。
在ThreadPoolExecutor.DiscardOldestPolicy中,如果执行程序未关闭 down,工作队列头部的任务被删除,然后 重试执行(可能再次失败,导致这种情况发生 重复。)
答案 0 :(得分:1)
来自ForkJoinPool' javadoc,
此实现拒绝提交的任务(即通过抛出 RejectedExecutionException)仅在关闭或关闭池时 内部资源已经用尽。
这与ThreadPoolExecutor.AbortPolicy的行为相同。