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

Comparing jsr166/src/test/loops/CachedThreadPoolLoops.java (file contents):
Revision 1.4 by dl, Fri Oct 23 19:57:06 2009 UTC vs.
Revision 1.9 by jsr166, Mon Aug 10 03:13:33 2015 UTC

# Line 1 | Line 1
1   /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at
4 < * http://creativecommons.org/licenses/publicdomain
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5   */
6  
7   //import jsr166y.*;
# Line 15 | Line 15 | public class CachedThreadPoolLoops {
15  
16      public static void main(String[] args) throws Exception {
17          int maxThreads = NCPUS * 3 / 2; // 100;
18 <        if (args.length > 0)
18 >        if (args.length > 0)
19              maxThreads = Integer.parseInt(args[0]);
20  
21          System.out.print("Warmup:");
22          for (int j = 0; j < 1; ++j) {
23 <            int k = 1;
24 <            for (int i = 1; i <= maxThreads;) {
23 >            for (int k = 1, i = 1; i <= maxThreads;) {
24                  System.out.print(" " + i);
25                  oneTest(i, 10000, false);
26                  Thread.sleep(100);
27                  if (i == k) {
28                      k = i << 1;
29                      i = i + (i >>> 1);
30 <                }
31 <                else
30 >                }
31 >                else
32                      i = k;
33              }
34          }
35          System.out.println();
36  
37 <        int k = 1;
39 <        for (int i = 1; i <= maxThreads;) {
37 >        for (int k = 1, i = 1; i <= maxThreads;) {
38              System.out.println("Threads:" + i);
39              oneTest(i, maxIters, true);
40              Thread.sleep(100);
41              if (i == k) {
42                  k = i << 1;
43                  i = i + (i >>> 1);
44 <            }
45 <            else
44 >            }
45 >            else
46                  i = k;
47          }
48 <   }
48 >    }
49  
50      static void oneTest(int nThreads, int iters, boolean print) throws Exception {
51          Thread.sleep(100); // System.gc();
# Line 77 | Line 75 | public class CachedThreadPoolLoops {
75          Thread.sleep(100); // System.gc();
76          if (print) System.out.print("ArrayBlockingQueue(256) ");
77          oneRun(new ArrayBlockingQueue<Runnable>(256), nThreads, iters, print);
80
78      }
79  
80      static final class Task implements Runnable {
81          final ThreadPoolExecutor pool;
82          final CountDownLatch done;
83 <        Task(ThreadPoolExecutor p, CountDownLatch d) {
84 <            pool = p;
83 >        Task(ThreadPoolExecutor p, CountDownLatch d) {
84 >            pool = p;
85              done = d;
86          }
87          public void run() {
# Line 92 | Line 89 | public class CachedThreadPoolLoops {
89              remaining.incrementAndGet();
90              int n;
91              while (!Thread.interrupted() &&
92 <                   (n = remaining.get()) > 0 &&
92 >                   (n = remaining.get()) > 0 &&
93                     done.getCount() > 0) {
94                  if (remaining.compareAndSet(n, n-1)) {
95                      try {
# Line 107 | Line 104 | public class CachedThreadPoolLoops {
104              }
105          }
106      }
107 <    
107 >
108      static void oneRun(BlockingQueue<Runnable> q, int nThreads, int iters, boolean print) throws Exception {
109 <      
110 <        ThreadPoolExecutor pool =
109 >
110 >        ThreadPoolExecutor pool =
111              new ThreadPoolExecutor(nThreads+1, Integer.MAX_VALUE,
112                                     1L, TimeUnit.SECONDS, q);
113  
# Line 134 | Line 131 | public class CachedThreadPoolLoops {
131      static final class LTQasSQ<T> extends LinkedTransferQueue<T> {
132          LTQasSQ() { super(); }
133          public void put(T x) {
134 <            try { super.transfer(x);
134 >            try { super.transfer(x);
135              } catch (InterruptedException ex) { throw new Error(); }
136          }
137      }
# Line 146 | Line 143 | public class CachedThreadPoolLoops {
143              if ((++calls & 1) == 0)
144                  super.put(x);
145              else {
146 <                try { super.transfer(x);
147 <                } catch (InterruptedException ex) {
148 <                    throw new Error();
146 >                try { super.transfer(x);
147 >                } catch (InterruptedException ex) {
148 >                    throw new Error();
149                  }
150              }
151          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines