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

Comparing jsr166/src/test/tck/LongAdderTest.java (file contents):
Revision 1.2 by jsr166, Fri Mar 22 16:10:19 2013 UTC vs.
Revision 1.4 by jsr166, Sun Jul 14 19:49:01 2013 UTC

# Line 85 | Line 85 | public class LongAdderTest extends JSR16
85      public void testSerialization() throws Exception {
86          LongAdder x = new LongAdder();
87          LongAdder y = serialClone(x);
88 <        assertTrue(x != y);
88 >        assertNotSame(x, y);
89          x.add(-22);
90          LongAdder z = serialClone(x);
91 +        assertNotSame(y, z);
92          assertEquals(-22, x.sum());
93          assertEquals(0, y.sum());
94          assertEquals(-22, z.sum());
# Line 146 | Line 147 | public class LongAdderTest extends JSR16
147      /**
148       * adds by multiple threads produce correct sum
149       */
150 <    public void testAddAndSumMT() {
150 >    public void testAddAndSumMT() throws Throwable {
151          final int incs = 1000000;
152          final int nthreads = 4;
153          final ExecutorService pool = Executors.newCachedThreadPool();
154          LongAdder a = new LongAdder();
155 <        Phaser phaser = new Phaser(nthreads + 1);
155 >        CyclicBarrier barrier = new CyclicBarrier(nthreads + 1);
156          for (int i = 0; i < nthreads; ++i)
157 <            pool.execute(new AdderTask(a, phaser, incs));
158 <        phaser.arriveAndAwaitAdvance();
159 <        phaser.arriveAndAwaitAdvance();
157 >            pool.execute(new AdderTask(a, barrier, incs));
158 >        barrier.await();
159 >        barrier.await();
160          long total = (long)nthreads * incs;
161          long sum = a.sum();
162          assertEquals(sum, total);
# Line 164 | Line 165 | public class LongAdderTest extends JSR16
165  
166      static final class AdderTask implements Runnable {
167          final LongAdder adder;
168 <        final Phaser phaser;
168 >        final CyclicBarrier barrier;
169          final int incs;
170          volatile long result;
171 <        AdderTask(LongAdder adder, Phaser phaser, int incs) {
171 >        AdderTask(LongAdder adder, CyclicBarrier barrier, int incs) {
172              this.adder = adder;
173 <            this.phaser = phaser;
173 >            this.barrier = barrier;
174              this.incs = incs;
175          }
176  
177          public void run() {
178 <            phaser.arriveAndAwaitAdvance();
179 <            LongAdder a = adder;
180 <            for (int i = 0; i < incs; ++i)
181 <                a.add(1L);
182 <            result = a.sum();
183 <            phaser.arrive();
178 >            try {
179 >                barrier.await();
180 >                LongAdder a = adder;
181 >                for (int i = 0; i < incs; ++i)
182 >                    a.add(1L);
183 >                result = a.sum();
184 >                barrier.await();
185 >            } catch (Throwable t) { throw new Error(t); }
186          }
187      }
188  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines