CountDownLatch和CyclicBarrier

CyclicBarrier的官方解释:函数

A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.

CyclicBarrier是一个同步的辅助类,容许一组线程相互之间等待,达到一个共同点,再继续执行。spa

CountDownLatch的官方解释:.net

A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.

CountDownLatch是一个同步的辅助类,容许一个或多个线程,等待其余一组线程完成操做,再继续执行。线程

CountDownLatch场景神还原:code

一年级期末考试要开始了,监考老师发下去试卷,而后坐在讲台旁边玩着手机等待着学生答题,有的学生提早交了试卷,并约起打球了,等到最后一个学生交卷了,老师开始整理试卷,贴封条,下班,陪老婆孩子去了。这里提早交卷的学生(能够理解为线程),作完本身的试卷是能够去干本身的事的。而老师只能等待全部的学生所有答完试卷之后才能够干本身的事情。

CountDownLatch场景补充:orm

玩LOL英雄联盟时会出现十我的不一样加载状态,可是最后一我的因为各类缘由始终加载不了100%,因而游戏系统自动等待全部玩家的状态都准备好,才展示游戏画面。

抽象图:(感受很形象)blog

请输入图片描述

每位乘客(线程)上车后,可用座位减1,直到为0,老司机就开始发车了。游戏

CyclicBarrier:可当作是个障碍,全部的线程必须到齐后才能一块儿经过这个障碍。

CyclicBarrier场景:公司组织户外拓展活动,帮助团队建设,其中最重要一个项目就是全体员工(包括女同事,BOSS)在完成其余项目时,到达一个高达四米的高墙没有任何抓点,要求全部人,一个不能少的越太高墙,才能继续进行其余项目。其中越太高墙的人,并不能干本身的事,或者去进行下一个项目,必须所有人员都翻太高墙后才能够进行下一个项目。图片

总结:
  1. CountDownLatch可让线程分段执行,好比说全部线程作完本身负责的第一阶段的任务后再共同干一件事
  2. CyclicBarrier须要等到每一个线程都到达某个点的时候,再一块儿作一件事或者各自作事,还能够等到某个点后,先汇总结果,而后再各自作事,好比barrierAction线程。
  3. CyclicBarrier能够不停的循环作一样的事,构造函数中线程数量必须跟实际的子线程数量相等。

以上内容大部分来自:https://blog.csdn.net/zzg1229...rem

相关文章
相关标签/搜索