gpt4 book ai didi

java - 为什么 ForkJoinPool::shutdownNow 返回一个空列表?

转载 作者:行者123 更新时间:2023-11-29 04:09:31 24 4
gpt4 key购买 nike

ExecutorService 有一个方法

List<Runnable> shutdownNow()

哪个

returns a list of the tasks that were awaiting execution.

但是,ForkJoinPool 总是返回一个 Collection.emptyList()。因为,ForkJoinPool 的实现

attempts to cancel and/orstop all tasks, and reject all subsequently submitted tasks,

它不应该返回被取消的任务列表吗?

最佳答案

为什么是空列表?
文档解释说(重点是我的):

This method cancels both existing and unexecuted tasks, in order to permit termination in the presence of task dependencies. So the method always returns an empty list (unlike the case for some other Executors).

为什么?

因为 ForkJoinPoolExecutorService 的“特殊”实现。
它可能有一些与执行的 fork 相关的任务依赖。
例如,在下面的例子中,如果提交的任务被停止,您还希望子任务 1 和子任务 2 也被终止:

simple example of fork join
这就是为什么当您停止 ForkJoinPool 实例的任务时,您将返回一个 List,表明没有更多的任务在等待。这样,任何等待其他任务终止或当前正在处理的任务也将终止,因为不再需要。
虽然我不确定方法的返回(我还没有找到相关线索)用于当前的实现。

关于java - 为什么 ForkJoinPool::shutdownNow 返回一个空列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55865865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com