Я наткнулся на Arrays.parallelPrefix, представленный в Java 8.
Этот перегруженный метод выполняет операцию над каждым элементом входного массива накопительным образом. Например, из документов:
Параллельно накапливает каждый элемент данного массива на месте, используя предоставленную функцию. Например, если массив изначально содержит [2, 1, 0, 3] и операция выполняет сложение, то по возвращении массив содержит [2, 3, 3, 6]. Параллельное вычисление префикса обычно более эффективно, чем последовательные циклы для больших массивов.
Итак, как Java выполняет эту задачу parallel
когда операция над термином зависит от результата операции предыдущего термина и т.д.?
Я попытался ForkJoinTasks
по коду сам, и они используют ForkJoinTasks
, но это не так просто, как они объединяют результат, чтобы получить окончательный массив.