У меня есть следующее l oop, которое я хотел бы преобразовать в параллельный поток. Обратите внимание, что mbbVariance
и nbbVariance
оба возвращают double
.
double[][] outMBB = new double[rows][maxBlockSize];
double[][] outNBB = new double[rows][maxBlockSize];
for (int j = 0; j < rows; j++) {
for (int m = 0; m < maxBlockSize; m++) {
outMBB[j][m] = mbbVariance(timeSeries[j], m + 1, alpha);
outNBB[j][m] = nbbVariance(timeSeries[j], m + 1, alpha);
}
}
Моя лучшая попытка была
double[][] outMBB = IntStream.range(0, rows)
.parallel()
.mapToDouble(j -> (
IntStream.range(0, maxBlockSize)
.mapToDouble(m -> mbbVariance(timeSeries[j], m + 1, alpha))
.toArray(double[]::new)
)
)
.toArray(double[][]::new);
double[][] outNBB = IntStream.range(0, rows)
.parallel()
.mapToDouble(j -> (
IntStream.range(0, maxBlockSize)
.mapToDouble(m -> nbbVariance(timeSeries[j], m + 1, alpha))
.toArray(double[]::new)
)
)
.toArray(double[][]::new);
, но это не работает.