10 |
|
* A recursive resultless {@link ForkJoinTask}. This class |
11 |
|
* establishes conventions to parameterize resultless actions as |
12 |
|
* {@code Void} {@code ForkJoinTask}s. Because {@code null} is the |
13 |
< |
* only valid value of type {@code Void}, methods such as join always |
14 |
< |
* return {@code null} upon completion. |
13 |
> |
* only valid value of type {@code Void}, methods such as {@code join} |
14 |
> |
* always return {@code null} upon completion. |
15 |
|
* |
16 |
|
* <p><b>Sample Usages.</b> Here is a sketch of a ForkJoin sort that |
17 |
|
* sorts a given {@code long[]} array: |
18 |
|
* |
19 |
|
* <pre> {@code |
20 |
|
* class SortTask extends RecursiveAction { |
21 |
< |
* final long[] array; final int lo; final int hi; |
21 |
> |
* final long[] array; final int lo, hi; |
22 |
|
* SortTask(long[] array, int lo, int hi) { |
23 |
|
* this.array = array; this.lo = lo; this.hi = hi; |
24 |
|
* } |
29 |
|
* int mid = (lo + hi) >>> 1; |
30 |
|
* invokeAll(new SortTask(array, lo, mid), |
31 |
|
* new SortTask(array, mid, hi)); |
32 |
< |
* merge(array, lo, hi); |
32 |
> |
* merge(array, lo, mid, hi); |
33 |
|
* } |
34 |
|
* } |
35 |
|
* }}</pre> |
40 |
|
* task increments each element of an array: |
41 |
|
* <pre> {@code |
42 |
|
* class IncrementTask extends RecursiveAction { |
43 |
< |
* final long[] array; final int lo; final int hi; |
43 |
> |
* final long[] array; final int lo, hi; |
44 |
|
* IncrementTask(long[] array, int lo, int hi) { |
45 |
|
* this.array = array; this.lo = lo; this.hi = hi; |
46 |
|
* } |