2016-01-05 16 views
0

我编写了一个简单的代码来使用Java fork连接功能并行运行。无法从RecursiveAction类中调用coInvoke函数

我使用的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的其他utilisations如

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

,但没有喜悦。

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

任何意见,将不胜感激。

非常感谢。

回答

0

我已经通过代

 coInvoke(tasks); 

随着

 RecursiveAction.invokeAll(tasks); 
修复了这个问题