无法从RecursiveAction类调用coInvoke函数

时间:2016-01-05 15:00:44

标签: java jdk1.7

我编写了一个使用Java fork join功能并行运行的简单代码。

我正在使用Java版本7(JDK 1.7)

import java.util.concurrent.RecursiveAction;

public class forkedPotential extends RecursiveAction {

    public forkedPotential(double rmin,double rmax,double rstep){

        for (double rad = rmin; rad <= rmax; rad = rad + rstep){
           double V = rad*rad;
           System.out.println(rad+" "+V);
        }

    }

    @Override
    protected void compute() {
        forkedPotential first = new forkedPotential(0.01,1.0,0.1);
        forkedPotential second = new forkedPotential(1.01,2.0,0.1);
        forkedPotential third = new forkedPotential(2.01,3.0,0.1);
        forkedPotential fourth = new forkedPotential(3.01,4.0,0.1);
        forkedPotential fifth = new forkedPotential(4.01,5.0,0.1);
        coInvoke(new forkedPotential(0.01,1.0,0.1),new forkedPotential(1.01,2.0,0.1));
    }

}

但我有一个问题,即无法调用coInvoke。

cannot find symbol
  symbol: method coInvoke(forkedPotential,forkedPotential)
  location: class forkedPotential
----

这应该是可接受的用法,因为forkedPotential扩展了RecursiveAction。 而Alt-Return并没有给我任何有用的指导。

我尝试过其他的coInvoke实用程序,例如

        forkedPotential[] tasks = {first,second,third,fourth,fifth};
        coInvoke(tasks);

但没有快乐。

我不知道为什么找不到这个coInvoke函数,因为它是RecursiveAction中的一个函数。

任何建议都将受到赞赏。

非常感谢。

1 个答案:

答案 0 :(得分:0)

我已经通过替换

解决了这个问题
        coInvoke(tasks);

使用

        RecursiveAction.invokeAll(tasks);