Посчитать сумму всех элементов двумерного массива используя Parallel Stream и Multithreading Java
Есть метод, который считает сумму всех элементов двумерного массива:
int sum2DArray(int[][] array) {
int sum = 0;
for (int[] ints : array) {
for (int number : ints) {
sum += number;
}
}
return sum;
}
Как можно переписать данный метод и увеличить производительность, чтобы посчитать сумму всех элементов двумерного массива, используя Parallel Stream и Multithreading?
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Преобразование в параллельный поток достаточно тривиально при помощи метода BaseStream::parallel:
public static int sum2DArray(int[][] arr) {
return Arrays.stream(arr) // Stream<int[]> - sequential
.parallel(); // Stream<int[]> - parallel
.flatMapToInt(Arrays::stream) // IntStream - parallel
.sum();
}
По умолчанию параллельные потоки используют ForkJoinPool::commonPool.