CountDownLatch、CyclicBarrier、join、awaitTermination

1、CountDownLatch程序计数器
官方解释:
A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.
允许一个或多个线程等待,直到其他线程的操作完成,再执行。


CountDownLatch、CyclicBarrier、join、awaitTermination_第1张图片
image.png

2、CyclicBarrier循环屏障
官方解释:
A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.
一组线程全都等待,直到每个线程都到达一个公共的屏障点,屏障才打开,继续后面的操作。


CountDownLatch、CyclicBarrier、join、awaitTermination_第2张图片
image.png

3、join
若在A线程执行过程中,执行线程B的join方法,则A线程会等待,直到B线程结束。
CountDownLatch、CyclicBarrier、join、awaitTermination_第3张图片
image.png

4、awaitTermination
①shutdown() 线程池状态置为shutdown,并不会立即停止:

停止接受外部submit的任务
内部正在执行或者队列中的任务会继续执行,直到结束
②shutdownNow() 线程池状态置为stop,试图立即停止,事实上并不一定
停止接受外部submit的任务
忽略队列中等待的任务
尝试将正在跑的任务interrupt中断
返回未执行的任务列表
③awaitTermination(long timeOut, TimeUnit unit) 阻塞当前线程
等待所有正在执行或队列中的任务执行完
等待时间超时
线程被中断,抛出InterruptedException
shutdown请求后所有任务执行完毕,则返回true,超时,则返回false
通常与shutdown联合使用


CountDownLatch、CyclicBarrier、join、awaitTermination_第4张图片
image.png

总结:优雅的关闭:shutdown
立即关闭,并返回未执行任务列表:shutdownNow
设置超时时间,检查线程池是否关闭:awaitTermination

你可能感兴趣的:(CountDownLatch、CyclicBarrier、join、awaitTermination)