2016-01-05 3 views
0

Я написал простой код для параллельной работы с использованием функции Java fork join.Невозможно вызвать функцию coInvoke из класса RecursiveAction

Я использую 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 не дает мне полезного руководства.

Я пробовал другие utilisations из coInvoke, таких как

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

, но без радости.

Я не знаю, почему эта функция coInvoke не может быть найдена, поскольку is является функцией в RecursiveAction.

Любые советы будут оценены.

спасибо.

ответ

0

Я установил эту проблему путем замены

 coInvoke(tasks); 

С

 RecursiveAction.invokeAll(tasks);