Как сделать правильную реализацию forkjoin
Создать синхронную многопоточную систему для определения суммы всех целых чисел или дробей в трех текстовых файлах. Как правильно реализовать forkjoin, не понимаю, что в recursiveaction вызывать рекурсивно.
import java.io.*;
import java.util.*;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;
public class Dispatcher {
public static void main(String[] args) {
SumOfDigits sumOfDigits = new SumOfDigits(Arrays.asList(
new File("text.txt"),
new File("text2.txt"),
new File("text3.txt")
));
ForkJoinPool pool = new ForkJoinPool(4);
pool.invoke(sumOfDigits);
System.out.println(sumOfDigits.resultInt + " " + sumOfDigits.resultDouble);
}
}
class SumOfDigits extends RecursiveAction {
List<File> files;
int resultInt;
double resultDouble;
public SumOfDigits(List<File> files) {
this.files = files;
}
void sum(File file) {
try (Scanner sc = new Scanner(file)) {
while (sc.hasNext()) {
String num = sc.next();
if (num.matches("^\\d+$")
) {
resultInt += Integer.parseInt(num);
} else if (num.matches("[0-9]+(\\.){1}[0-9]*")) {
resultDouble += Double.parseDouble(num);
}
}
} catch (Exception e) {
}
}
@Override
protected void compute() {
files.forEach(this::sum);
}
}