显示锁
    Lock(接口)
    ReentrantLock(可重入锁)
    ReentrantReadWriteLock.ReadLock
    ReentrantReadWriteLock.WriteLock
    Condition(便于协调线程之间的同步关系,粒度更细)
    ReadWriteLock
    ReentrantReadWriteLock(读写锁,读共享,写互斥)
    LockSupport()

    线程协调
    CountDownLatch:阻塞直到所有线程执行结束,【做减法直到0】【一等多】
    CyclicBarrier:多线线程互相等待,【做加法直到目标值】【互相等】
    Semaphore:信号量,做限流,【强位置】
    Executors:【创建线程池】
    Exchangers:两个线程之间交换数据【两个线程做数据同步】

    java有哪些线程池?
    1.newCachedThreadPool创建一个可缓存线程池程
    2.newFixedThreadPool 创建一个定长线程池
    3.newScheduledThreadPool 创建一个周期性执行任务的线程池
    4.newSingleThreadExecutor 创建一个单线程化的线程池