--- jsr166/src/test/loops/SimpleMutexLoops.java 2005/06/10 15:45:19 1.2 +++ jsr166/src/test/loops/SimpleMutexLoops.java 2016/12/31 19:12:36 1.9 @@ -1,16 +1,12 @@ /* - * @test - * @synopsis multiple threads using a single lock - */ -/* * Written by Doug Lea with assistance from members of JCP JSR-166 - * Expert Group and released to the public domain. Use, modify, and - * redistribute this code in any way without acknowledgement. + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ */ -import java.util.concurrent.*; -import java.util.concurrent.locks.*; -import java.util.*; +import java.util.concurrent.CyclicBarrier; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public final class SimpleMutexLoops { static final ExecutorService pool = Executors.newCachedThreadPool(); @@ -20,23 +16,22 @@ public final class SimpleMutexLoops { public static void main(String[] args) throws Exception { int maxThreads = 100; - if (args.length > 0) + if (args.length > 0) maxThreads = Integer.parseInt(args[0]); new MutexLoop(1).test(); new MutexLoop(1).test(); print = true; - int k = 1; - for (int i = 1; i <= maxThreads;) { + for (int k = 1, i = 1; i <= maxThreads;) { System.out.print("Threads: " + i); new MutexLoop(i).test(); Thread.sleep(100); if (i == k) { k = i << 1; i = i + (i >>> 1); - } - else + } + else i = k; } pool.shutdown(); @@ -56,15 +51,15 @@ public final class SimpleMutexLoops { } final void test() throws Exception { - for (int i = 0; i < nthreads; ++i) + for (int i = 0; i < nthreads; ++i) pool.execute(this); barrier.await(); barrier.await(); if (print) { long time = timer.getTime(); - long tpi = time / ((long)iters * nthreads); + long tpi = time / ((long) iters * nthreads); System.out.print("\t" + LoopHelpers.rightJustify(tpi) + " ns per lock"); - double secs = (double)(time) / 1000000000.0; + double secs = (double) time / 1000000000.0; System.out.println("\t " + secs + "s run time"); } @@ -76,7 +71,7 @@ public final class SimpleMutexLoops { public final void run() { final Mutex lock = this.lock; try { - barrier.await(); + barrier.await(); int sum = v + 1; int x = 0; int n = iters; @@ -95,12 +90,12 @@ public final class SimpleMutexLoops { ++readBarrier; for (int l = x & 7; l > 0; --l) sum += LoopHelpers.compute6(sum); - } + } barrier.await(); result += sum; } - catch (Exception ie) { - return; + catch (Exception ie) { + return; } } }