平均を計算し、巨大なファイルからいくつかの数値の根を抽出する必要があります。
1, 2, 3, 4, 5,\n
6, 7, 8, 9, 10,\n
11, 12, 13, 14,15,\n
...
これはコードです:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class App1{
int res, c;
double mean, root;
ArrayList list = new ArrayList();
public App1() {
// einlesen
Scanner sc = null;
try {
sc = new Scanner(new File("file.txt")).useDelimiter("[,\\s]+");
} catch (FileNotFoundException ex) {
System.err.println(ex);
}
while (sc.hasNextInt()) {
list.add(sc.nextInt());
res += (int) list.get(c);
c++;
}
sc.close();
// Mean
mean = res / list.size();
// Root
root = Math.sqrt(mean);
System.out.println("Mean: " + mean);
System.out.println("Root: " + root);
}
public static void main(String[] args) {
App1 app = new App1();
}
}
並列化する方法はありますか?
平均を計算する前にすべての数値が必要なので、あるスレッドがファイルから数値をフェッチしている間、別のスレッドが計算することはできません。
ルートの抽出と同じこと: 平均がまだ計算されていない場合、スレッドは平均からルートを抽出できません。
Futureについて考えましたが、それは解決策でしょうか?