在我阅读the javadoc about ForkJoinTask时,我发现了以下声明:
此方法只能在
ForkJoinPool
次计算中调用 (可以使用方法inForkJoinPool()
确定)。尝试去 在其他上下文中调用可能会导致异常或错误 包括ClassCastException
。
我不清楚ForkJoinContext
在这里是什么意思。例如,我知道静态上下文的含义。它明确地在JLS 8.1.3中定义如下(Emphasize's mine):
声明或表达式在静态上下文中出现 当且仅当 最里面的方法,构造函数,实例初始化器,静态 初始化程序,字段初始值设定项或显式构造函数调用 括起语句或表达式的语句是静态方法,a 静态初始化程序,静态变量的变量初始值设定项,或 显式构造函数调用语句(第8.8.7节)。
答案 0 :(得分:4)
这里讨论的上下文不是静态/非静态上下文。
这意味着必须从属于ForkJoinPool
。
所以必须从递归任务中调用它。从其他任何地方打电话都可能导致异常/错误。