ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/RecursiveActionTest.java
(Generate patch)

Comparing jsr166/src/test/tck/RecursiveActionTest.java (file contents):
Revision 1.36 by jsr166, Sun Jun 26 06:50:19 2011 UTC vs.
Revision 1.37 by jsr166, Mon Jun 27 02:47:32 2011 UTC

# Line 1197 | Line 1197 | public class RecursiveActionTest extends
1197          testInvokeOnPool(asyncSingletonPool(), a);
1198      }
1199  
1200 +    /** Demo from RecursiveAction javadoc */
1201      static class SortTask extends RecursiveAction {
1202          final long[] array; final int lo, hi;
1203          SortTask(long[] array, int lo, int hi) {
1204              this.array = array; this.lo = lo; this.hi = hi;
1205          }
1206 <        final static int THRESHOLD = 100;
1206 >        SortTask(long[] array) { this(array, 0, array.length); }
1207          protected void compute() {
1208              if (hi - lo < THRESHOLD)
1209 <                sequentiallySort(array, lo, hi);
1209 >                sortSequentially(lo, hi);
1210              else {
1211                  int mid = (lo + hi) >>> 1;
1212                  invokeAll(new SortTask(array, lo, mid),
1213                            new SortTask(array, mid, hi));
1214 <                merge(array, lo, mid, hi);
1214 >                merge(lo, mid, hi);
1215              }
1216          }
1217 <        static void sequentiallySort(long[] array, int lo, int hi) {
1217 >        // implementation details follow:
1218 >        final static int THRESHOLD = 100;
1219 >        void sortSequentially(int lo, int hi) {
1220              Arrays.sort(array, lo, hi);
1221          }
1222 <        static void merge(long[] array, int lo, int mid, int hi) {
1222 >        void merge(int lo, int mid, int hi) {
1223              long[] buf = Arrays.copyOfRange(array, lo, mid);
1224              for (int i = 0, j = lo, k = mid; i < buf.length; j++)
1225                  array[j] = (k == hi || buf[i] < array[k]) ?
# Line 1233 | Line 1236 | public class RecursiveActionTest extends
1236          for (int i = 0; i < array.length; i++)
1237              array[i] = rnd.nextLong();
1238          long[] arrayClone = array.clone();
1239 <        testInvokeOnPool(mainPool(),
1237 <                         new SortTask(array, 0, array.length));
1239 >        testInvokeOnPool(mainPool(), new SortTask(array));
1240          Arrays.sort(arrayClone);
1241          assertTrue(Arrays.equals(array, arrayClone));
1242      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines