CountDownLatch
允许一个或多个线程等待其他线程完成操作。
接收一个int参数作为计数器,调用countDown方法,计数器减1。await方法在计数器为0时,线程终止阻塞。
CyclicBarrier
当所有线程都到达屏障时,被屏障的所有线程才会继续运行。
Semaphore
信号量,用来控制同时访问特定资源的线程数量。
构造函数接收int数量信号量个数。
acquire()方法获取线程执行许可证,获取到后才可以执行
release()方法规划许可证。
Exchanger
线程间交换数据工具类。调用exchange()方法,当两个线程到达同步点时,可以彼此交换数据。
线程池
实现原理
核心线程数、工作队列、最大线程数、拒绝策略
当有个新任务到线程池时,
若线程池中线程数没到达核心线程数时,则创建新线程执行任务。
否则加入工作队列
若工作队列满时,则判断线程数是否到达最大线程数,若不到,则创建新线程执行任务。
否则进入拒绝策略。
Executor
ThreadPoolExecutor
FixedThreadPool
SingleThreadExecutor
CachedThreadPool