# ArraySum.java
# ArraySum.java
java
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;
@Override
protected Long compute() {
int length = end - start;
if (length <= THRESHOLD) {
// Compute directly
long sum = 0;
for (int i = start; i < end; i++) {
sum += array[i];
}
return sum;
} else {
// Split task
int mid = start + length / 2;
SumTask leftTask = new SumTask(array, start, mid);
SumTask rightTask = new SumTask(array, mid, end);
// Fork subtasks
leftTask.fork();
rightTask.fork();
long rightResult = rightTask.join();
long leftResult = leftTask.join();