CycliBarriar和CountdownLatch之间有什么区别呢?
下文笔者讲述CycliBarriar和CountdownLatch的区别,如下所示
CountDownLatch(倒计时器)简介
CountDownLatch:
常用于某个线程A等待若干个其他线程执行完任务之后
它才执行
强调一个线程等多个线程完成某件事情
CountDownLatch方法比较少,操作比较简单,CountDownLatch是不能复用的。
CountDownLatch方法原理:
任务分为N个子线程去执行,state也初始化为N(注意N要与线程个数一致)
这N个子线程是并行执行的,每个子线程执行完后countDown()一次
state会CAS(Compare and Swap)减1
等到所有子线程都执行完后(即state=0),会unpark()主调用线程,然后主调用线程就会从await()函数返回,继续后余动作
CycliBarriar和CountdownLatch区别
区别1:复用性上不同
CountDownLatch是不能够重用
CyclicBarrier是可以重用
区别2:侧重点不同
CountDownLatch:一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行
CyclicBarrier:一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


