zoukankan      html  css  js  c++  java
  • 7,CountDownLatch 与 CyclicBarrier 的 区别

    CountDownLatch :

    一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 
    用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 
    方法,所以在当前计数到达零之前,await 
    方法会一直受阻塞。之后,会释放所有等待的线程,await 
    的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。

     CountDownLatch 很适合用来将一个任务分为n个独立的部分,等这些部分都完成后继续接下来的任务,CountDownLatch 只能出发一次,计数值不能被重置。

    CyclicBarrier:

    一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。

    CyclicBarrier可以多次重复使用

    通俗的点说

    CountDownLatch 是主线程阻塞在那里,其他异步子线程,执行完自己的任务后就结束了,

    CyclicBarrier  是主线程不阻塞,子线程全部阻塞,就算其中的某些子线程提前先完成了自己的任务,也阻塞在那里,直到所有的子线程全部执行完各自的任务,然后唤醒了主线程的后续任务后,才结束各自的线程

    举个例子来说

    公司组织去某个公园玩,公司的人事需要知道人员的参与情况,并讲解注意事项 有2种方式

    1:所有的员工自己打车去公园玩, 这时候就是员工自己走自己的,到公园门口,向人事报到,报到完,向人事领了一张安全注意事项后就可以就可以去公园玩了,这个就是 CountDownLatch 

    2:所有的员工先统一到公司集合,统一做公司的大巴到公园门口,人事在大巴上集中给大家讲解了安全注意事项,并发放了安全注意事项, 然后到公园后解散各自去玩, 这个就是 CyclicBarrier

  • 相关阅读:
    size_t和size_type 的区别 什么时候用哪个?
    分享:在django中执行脚本
    Jquery真的不难~第一回 编程基础知识
    Jquery真的不难~第三回 如何改变HTML标签的样式
    Castle~实现IoC容器
    Jquery真的不难~第二回 选择器的使用及性能
    Castle~动态代理实现对方法的拦截
    jquery学习手记(8)遍历
    jquery学习手记(2)jQuery对象和DOM对象相互转换
    jquery学习手记(9)事件基础知识
  • 原文地址:https://www.cnblogs.com/zyguo/p/4344018.html
Copyright © 2011-2022 走看看