Java tutorial
import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; public class Main { public static void main(String args[]) { CountDownLatch cdl = new CountDownLatch(5); System.out.println(cdl.getCount()); new MyThread(cdl); try { cdl.await(100, TimeUnit.SECONDS); } catch (InterruptedException exc) { System.out.println(exc); } System.out.println(cdl.toString()); } } class MyThread implements Runnable { CountDownLatch latch; MyThread(CountDownLatch c) { latch = c; new Thread(this).start(); } public void run() { for (int i = 0; i < 5; i++) { System.out.println(i); latch.countDown(); // decrement count } } }