我编写了一个使用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中的一个函数。
任何建议都将受到赞赏。
非常感谢。
答案 0 :(得分:0)
我已经通过替换
解决了这个问题 coInvoke(tasks);
使用
RecursiveAction.invokeAll(tasks);