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

Comparing jsr166/src/test/loops/LockLoops.java (file contents):
Revision 1.11 by jsr166, Mon Aug 10 03:13:33 2015 UTC vs.
Revision 1.12 by jsr166, Wed Jun 8 20:01:45 2016 UTC

# Line 18 | Line 18 | public final class LockLoops {
18      static boolean doBuiltin = true;
19      static boolean doReadWrite = true;
20      static boolean doSemaphore = true;
21 +    static boolean doStampedLock = true;
22      static boolean doFair = true;
23  
24      public static void main(String[] args) throws Exception {
# Line 125 | Line 126 | public final class LockLoops {
126                  Thread.sleep(10);
127              }
128          }
129 +
130 +        if (doStampedLock) {
131 +            if (print)
132 +                System.out.print("StampedLockWrite   ");
133 +            new StampedLockWriteLoop().test(v, nthreads, iters);
134 +            Thread.sleep(10);
135 +
136 +            if (print)
137 +                System.out.print("StampedLockRead    ");
138 +            new StampedLockReadLoop().test(v, nthreads, iters);
139 +            Thread.sleep(10);
140 +        }
141      }
142  
143      abstract static class LockLoop implements Runnable {
# Line 326 | Line 339 | public final class LockLoops {
339              return sum;
340          }
341      }
342 +
343      private static class FairSemaphoreLoop extends LockLoop {
344          private final Semaphore sem = new Semaphore(1, true);
345          final int loop(int n) {
# Line 371 | Line 385 | public final class LockLoops {
385                  }
386                  sum += LoopHelpers.compute2(v);
387              }
388 +            return sum;
389 +        }
390 +    }
391 +
392 +    private static class StampedLockWriteLoop extends LockLoop {
393 +        private final StampedLock lock = new StampedLock();
394 +        final int loop(int n) {
395 +            int sum = 0;
396 +            while (n-- > 0) {
397 +                long stamp = lock.writeLock();
398 +                try {
399 +                    v = LoopHelpers.compute1(v);
400 +                }
401 +                finally {
402 +                    lock.unlockWrite(stamp);
403 +                }
404 +                sum += LoopHelpers.compute2(v);
405 +            }
406 +            return sum;
407 +        }
408 +    }
409 +
410 +    private static class StampedLockReadLoop extends LockLoop {
411 +        private final StampedLock lock = new StampedLock();
412 +        final int loop(int n) {
413 +            int sum = 0;
414 +            while (n-- > 0) {
415 +                long stamp = lock.readLock();
416 +                try {
417 +                    v = LoopHelpers.compute1(v);
418 +                }
419 +                finally {
420 +                    lock.unlockRead(stamp);
421 +                }
422 +                sum += LoopHelpers.compute2(v);
423 +            }
424              return sum;
425          }
426      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines