Semaphore:信号量,提供了资源数量的并发访问控制
    semaphore.acquire占用资源
    semaphore.release释放资源
    基于AQS,资源总数即state初始值acquire对state进行CAS减操作,release对state进行CAS增操作

    CountDownLatch:栅栏,可以简单理解为主线程等N个worker线程执行完后再执行
    主线程await(),worker线程countDown()
    基于AQS阻塞队列来实现的,可以让多个线程阻塞在state=0的条件上,通过countDown方法一直减少state值,减到0后一次性唤醒所有阻塞线程

    CyclicBarrier :循环栅栏,N个线程做同一件事,分为阶段1,2,3,都完成阶段1再进行下一阶段。
    通过ReentranLock和Condition实现,CyclicBarrier里包含这俩,await的时候就锁住,到达condition时就释放锁

    Exchanger:线程之间交换数据。通过exchange方法,核心机制就是CAS+park(挂起)/unpark(唤醒)

    Phaser:jdk1.7后加入的工具类,可代替CountDownLatch和CyclicBarrier。新特性就是可以动态的调节线程个数,拥有层次是树状结构