【发布时间】:2018-07-12 06:18:54
【问题描述】:
我的代码中有parallelStreams(),它使用的是ForkJoinPool。
线程池执行器有 4 个预定义的处理程序策略,我想知道它在公共池中默认使用哪一个(如果有的话)。我在文档中找不到它。
在默认的 ThreadPoolExecutor.AbortPolicy 中,处理程序抛出一个 拒绝时出现运行时 RejectedExecutionException。
在 ThreadPoolExecutor.CallerRunsPolicy 中,调用的线程 execute 本身运行任务。这提供了一个简单的反馈控制 降低新任务提交速度的机制。
在ThreadPoolExecutor.DiscardPolicy中,一个不能执行的任务是 干脆掉了。
在ThreadPoolExecutor.DiscardOldestPolicy中,如果executor没有关闭 down,工作队列头部的任务被丢弃,然后 重试执行(可能再次失败,导致 重复。)
【问题讨论】:
-
这里说的不是common pool,是说ThreadPoolExecutors
-
"只有当池关闭或内部资源耗尽时,此实现才会拒绝提交的任务(即通过抛出 RejectedExecutionException)。来自 ForkJoinPool 的 javadoc。所以 AbortPolicy 仍然是默认的。
-
@Vasan,谢谢!错过了那部分....您可以添加作为答案吗?
标签: java threadpool threadpoolexecutor