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();
    }
}