0

在以下代码中调用许多 RecursiveAction 会有什么缺点?

类 RecursiveActionThing 扩展 RecursiveAction {

int numbers = 1000;
public RecursiveActionThing(int numbers)
{
    this.numbers = numbers;

}
public void compute()
{
    if (numbers<500)
    {
        for (int i =0;i<numbers;i++)
        {
            System.out.println(i);
        }
    }
    else{
        invokeAll(new RecursiveActionThing(numbers/2),new RecursiveActionThing(numbers/2), new RecursiveActionThing(numbers/2), new RecursiveActionThing(numbers/2));

    }
}

}

到目前为止,我只看到调用 2 个任务,因此执行上述调用可能会在创建所有这些任务时产生巨大的开销,但是为什么通过将 varargs 作为参数来允许呢?在某些情况下可能有用吗?哪个?提前致谢。

4

2 回答 2

0

这没有多大意义。如果您希望执行某个数字,您应该能够通过以 2 为间隔的除法自己控制它。

但是为什么通过将可变参数作为参数来允许呢?在某些情况下可能有用吗?哪个?

我想不出任何有用的理由。这是 ExecutorService 的继承,只是实现功能。我不会推荐它。

看看这个问题。它没有你希望的那么好。

ForkJoinPool 似乎浪费了一个线程

于 2013-09-07T17:55:52.737 回答
0

在 jsr166 提供的测试类中有一个很好的例子,MatrixMultiply.java 你可以在这里找到它

于 2013-09-07T17:51:09.077 回答