Java Scala中ForkJoin框架中invoke()和join()的区别

Java Scala中ForkJoin框架中invoke()和join()的区别,java,scala,fork-join,Java,Scala,Fork Join,斯卡拉: 我知道f2.compute()会等待所有子任务完成。 但是与join()有什么区别呢? 这和递归有什么关系吗 为什么在f2上直接调用compute(),而不是通过f2.invoke() 非常感谢您的解释/源代码提示 类斐波那契扩展递归任务{ 最终整数n; 斐波那契(int n){this.n=n;} 整数计算(){ 如果(此处为n,invoke和fork之间的区别解释得很好:thx:)这篇文章回答了所有问题——除了“为什么在f2上直接调用compute(),而不是通过f2.invok

斯卡拉:

我知道
f2.compute()
会等待所有子任务完成。 但是与join()有什么区别呢? 这和递归有什么关系吗

为什么在
f2
上直接调用
compute()
,而不是通过
f2.invoke()

非常感谢您的解释/源代码提示

类斐波那契扩展递归任务{ 最终整数n; 斐波那契(int n){this.n=n;} 整数计算(){
如果(此处为n,
invoke
fork
之间的区别解释得很好:thx:)这篇文章回答了所有问题——除了“为什么在f2上直接调用compute(),而不是通过f2.invoke()调用?”在这里,
invoke
fork
之间的区别得到了很好的解释:thx:)这篇文章回答了所有问题——除了“为什么在f2上直接调用compute(),而不是通过f2.invoke()?”
class Fibonacci extends RecursiveTask<Integer> {

    final int n;

    Fibonacci(int n) { this.n = n; }

    Integer compute() {

        if (n <= 1)

            return n;

        Fibonacci f1 = new Fibonacci(n - 1);

        f1.fork();

        Fibonacci f2 = new Fibonacci(n - 2);

        return f2.compute() + f1.join();

    }

}