Quote Originariamente inviata da kuarl Visualizza il messaggio
al di la del fatto che quando vedo campi e metodi senza un modificatore di visibilità provo la stessa sensazione di unghiate sopra la lavagna, io fare così:

codice:
public void parallelizzaEdEsegui(Collection<? extends RecursiveTask<Double>> tasks) {
   ForkJoinPool fjp = new ForkJoinPool();
   for(RecursiveTask<Double> t : tasks)
      fjp.invoke(t);
}
le tue classi (... e anche qui sorvolo) che eseguono conti estendono tutte RecursiveTask. Quindi puoi instanziarle, infilarle in una collection qualsiasi (lista, mappa, set o che ne sò) e darla in pasto a questo metodo...

edit:
alternativamente, usando varargs:
codice:
public void parallelizzaEdEsegui(RecursiveTask<Double>... tasks) {
  ForkJoinPool fjp = new ForkJoinPool();
   for(RecursiveTask<Double> t : tasks)
      fjp.invoke(t);
}
come prima ma invece di buttare tutto in una collection devi fare una roba tipo:
codice:
parallelizzaEdEsegui(new Sum(nums,0, nums.length), new Sum(nums,1, nums.length), ... );


ovvero darle come parametro alla funzione quante volte vuoi...
Non capisco come dovrei modificare il codice e ho timore che tu ti sia dimenticato di portare fuori da Sum questo pezzo:

codice:
for (int i = start; i < end; i++) {
                sum += data[i];
                for (int j = start; j < end; j++) {
                    sum += data[j];
                    sum -= data[j];
                }
            }
Se riesci a farmi vedere l'esempio completo forse riesco a comprendere la tua idea.