1. CountDownLatch 是一个线程等待其他线程, CyclicBarrier 是多个线程互相等待。
    2. CountDownLatch 的计数是减 1 直到 0,CyclicBarrier 是加 1,直到指定值。
    3. CountDownLatch 是一次性的, CyclicBarrier 可以循环利用。
    4. CyclicBarrier 可以在最后一个线程达到屏障之前,选择先执行一个操作。
    5. Semaphore ,需要拿到许可才能执行,并可以选择公平和非公平模式。