2016-01-05 36 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); 
修復了這個問題