美文网首页并发编程
CyclicBarrier和CountDownLatch的区别

CyclicBarrier和CountDownLatch的区别

作者: xiaolyuh | 来源:发表于2019-06-27 16:43 被阅读13次
    • CountDownLatch是两组线程,第一组负责计数器减一,第二组是阻塞线程,当第一组线程将计数器减到0时,第二组线程才开始执行,放行是由第三方控制;CyclicBarrier是只有一组线程,只有当所有线程到达拦截点的时候,才会继续往下执行,放行是由一组线程本身控制。
    • CountDownLatch放行条件是大于或等于线程数;CyclicBarrier放行条件是等于线程数
    • CountDownLatch的计数器只能使用一次,而CyclicBarrier的计数器可以使用reset()方法重 置。所以CyclicBarrier能处理更为复杂的业务场景。例如,如果计算发生错误,可以重置计数 器,并让线程重新执行一次。
    • CyclicBarrier还提供其他有用的方法,比如getNumberWaiting方法可以获得Cyclic-Barrier 阻塞的线程数量。isBroken()方法用来了解阻塞的线程是否被中断。

    参考

    《java并发编程的艺术》

    源码

    https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases

    spring-boot-student-concurrent 工程

    layering-cache

    为监控而生的多级缓存框架 layering-cache这是我开源的一个多级缓存框架的实现,如果有兴趣可以看一下

    相关文章

      网友评论

        本文标题:CyclicBarrier和CountDownLatch的区别

        本文链接:https://www.haomeiwen.com/subject/fjbrcctx.html