3334353637383940414243
public void testLatchWithParameterizedDown() throws Exception { ReusableLatch latch = new ReusableLatch(1000); latch.countDown(5000); assertTrue(latch.await(1000)); assertEquals(0, latch.getCount());
5455565758596061626364
} for (int i = 100; i > 0; i--) { Assert.assertEquals(i, latch.getCount()); latch.countDown(); Assert.assertEquals(i - 1, latch.getCount()); } latch.await(); }
188189190191192193194195196197198
// Everybody should start at the same time, to worse concurrency // effects latchStart.await(); for (int i = 0; i < numberOfAdds; i++) { latch.countDown(); } } catch (Exception e) { ReusableLatchTest.log.error(e.getMessage(), e);
224225226227228229230231232233234
for (int i = 0; i < numberOfThreads; i++) { Assert.assertTrue(waits[i].waiting); } latch.countDown(); for (int i = 0; i < numberOfThreads; i++) { waits[i].join(); }
244245246247248249250251252253254
public void testReuseLatch() throws Exception { final ReusableLatch latch = new ReusableLatch(5); for (int i = 0 ; i < 5; i++) { latch.countDown(); } latch.countUp(); class ThreadWait extends Thread
285286287288289290291292293294295
t.readyLatch.await(); Assert.assertEquals(true, t.waiting); latch.countDown(); t.join(); Assert.assertEquals(false, t.waiting);
302303304305306307308309310311312
314315316317318319320321322323324
Assert.assertTrue(latch.await(1000)); Assert.assertEquals(0, latch.getCount()); latch.countDown(); Assert.assertEquals(0, latch.getCount()); }
190191192193194195196197198199200
{ errors.incrementAndGet(); } finally { latch.countDown(); } } }