Я хочу скопировать массив в другой в параллельно , например:
int[] a = {1, 3, 5, 7, 9};
int[] b = new int[a.length];
for(int i = 0; i < a.length; i++) // parallel
{
b[i] = a[i];
}
В этом примере я хотел бы, чтобы один поток скопировал первые 3 индекса, идругой, чтобы скопировать другой 2. Конечно, это может быть и в любом другом варианте.
На что следует обратить внимание:
- Я планирую запустить это на очень больших массивах, поэтому небольшие издержки - это нормально
- Возможно, добавлено больше кодак телу цикла, например, другому массиву - c, который получит [i] + 1
Что я пробовал:
IntStream.range
:
IntStream.range(0, a.length).parallel().forEach(i -> {
b[i] = a[i];
});
Это привело к ошибке Local variable percentiles defined in an enclosing scope must be final or effectively final
, поскольку b
не является final
и не может быть назначено.
fork / join: возможно, но он ищет другое решение, которое не включает объявление нового класса или расширение существующего.