4142434445464748495051
} for (int i = 100; i > 0; i--) { Assert.assertEquals(i, latch.getCount()); latch.countDown(); Assert.assertEquals(i - 1, latch.getCount()); } latch.await(); }
175176177178179180181182183184185
// 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);
211212213214215216217218219220221
for (int i = 0; i < numberOfThreads; i++) { Assert.assertTrue(waits[i].waiting); } latch.countDown(); for (int i = 0; i < numberOfThreads; i++) { waits[i].join(); }
231232233234235236237238239240241
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
272273274275276277278279280281282
t.readyLatch.await(); Assert.assertEquals(true, t.waiting); latch.countDown(); t.join(); Assert.assertEquals(false, t.waiting);
289290291292293294295296297298299
301302303304305306307308309310311
Assert.assertTrue(latch.await(1000)); Assert.assertEquals(0, latch.getCount()); latch.countDown(); Assert.assertEquals(0, latch.getCount()); }
874875876877878879880881882883884
commit(consumerTX); delete(addedRecord); reusableLatchWait.countDown(); tCompact.join(); journal.forceMoveNextFile();
10251026102710281029103010311032103310341035
for (int i = 1; i < 5; i++) { delete(i); } reusableLatchWait.countDown(); tCompact.join(); // Delete part of the live records after cleanup is done for (int i = 5; i < 10; i++)
11201121112211231124112511261127112811291130
updateTx(updateTX, appendTwo); commit(updateTX); // delete(appendTwo); reusableLatchWait.countDown(); tCompact.join(); journal.compact(); stopJournal();