理解ForkJoinTask的invokeAll方法

3
当我阅读有关ForkJoinTask的javadoc时,我看到了以下声明:

此方法只能从ForkJoinPool计算中调用(可以使用inForkJoinPool()方法确定)。试图在其他上下文中调用会导致异常或错误,可能包括ClassCastException

我不清楚这里的ForkJoinContext是什么意思。例如,我知道静态上下文是什么意思。它在JLS 8.1.3中明确定义如下(强调我自己添加的):
如果并且仅当最内层的方法、构造函数、实例初始化器、静态初始化器、字段初始化器或显式构造函数调用语句包含语句或表达式是静态方法、静态初始化器、静态变量的变量初始化器或显式构造函数调用语句(§8.8.7),则在静态上下文中发生语句或表达式。
1个回答

4

这里讨论的上下文并非静态/非静态上下文。

这意味着该方法必须从属于 ForkJoinPool 的线程中调用。

因此,它必须从递归任务中调用。在其他任何地方调用可能会导致异常/错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接