Slide 20
Slide 20 text
public class MergeSortTask extends RecursiveAction {
private static final int THRESHOLD = 1000;
private final double[] x, work;
private final int start, end;
public MergeSortTask(double[] x, double[] work, int start, int end) {
this.x = x; this.work = work;
this.start = start; this.end = end;
}
@Override
protected void compute() {
int n = end - start;
if (n > THRESHOLD) {
int mid = start + (n >>> 1);
invokeAll(new MergeSortTask(work, x, start, mid),
new MergeSortTask(work, x, mid, end));
merge(mid);
} else {
Arrays.sort(x, start, end);
}
}
private void merge(int mid) { ... }
}