import java.util.concurrent.*; public class TestCountDownLatch { public static void main(String[] args) throws Exception { int threads = 10; CountDownLatch cd = new CountDownLatch(threads); ExecutorService executor = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int num = i + 1; executor.execute(() -> { System.out.println("Thread " + num + " start."); cd.countDown(); }); } cd.await(); System.out.println("All finished."); executor.shutdown(); } }