--- jsr166/src/test/loops/FutileTimedTryLockLoops.java 2014/12/31 17:00:58 1.2 +++ jsr166/src/test/loops/FutileTimedTryLockLoops.java 2015/01/26 17:40:39 1.4 @@ -51,7 +51,7 @@ public final class FutileTimedTryLockLoo continue nextArg; } } - throw new Error("Usage: FutileTimedTryLockLoops minThreads=n maxThreads=n Threads=n nanos=n iters=n"); + throw new Error("Usage: FutileTimedTryLockLoops minThreads=n maxThreads=n threads=n nanos=n iters=n"); } final ExecutorService pool = Executors.newCachedThreadPool(); final ReentrantLock lock = new ReentrantLock(); @@ -59,6 +59,10 @@ public final class FutileTimedTryLockLoo lock.lock(); for (int i = minThreads; i <= maxThreads; i += (i+1) >>> 1) { + // warmup + if (i == minThreads) + pool.invokeAll(Collections.nCopies(i, task)); + long startTime = System.nanoTime(); pool.invokeAll(Collections.nCopies(i, task)); long elapsed = System.nanoTime() - startTime;