• CountDownLatch与CyclicBarrier 区别


     

    相信每个想深入了解多线程开发的Java开发者都会遇到CountDownLatch和CyclicBarrier,大家也在网上看到各种介绍原理,代码的,以及他们区别(应付面试)的,但是很少能讲清楚:他们到底有啥作用,怎么用,应用那些场景?为什么面试总会遇到?本文结合场景为大家加深理解。

    理解:

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

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

    他们都是:Synchronization  aid,我把它翻译成同步辅助器,既然是辅助工具,怎么使用啊?哪些场景使用啊?

    个人理解:CountDownLatch:我把他理解成倒计时锁

    场景还原:一年级期末考试要开始了,监考老师发下去试卷,然后坐在讲台旁边玩着手机等待着学生答题,有的学生提前交了试卷,并约起打球了,等到最后一个学生交卷了,老师开始整理试卷,贴封条,下班,陪老婆孩子去了。

    补充场景:我们在玩LOL英雄联盟时会出现十个人不同加载状态,但是最后一个人由于各种原因始终加载不了100%,于是游戏系统自动等待所有玩家的状态都准备好,才展现游戏画面。

    个人理解:CyclicBarrier:可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍

    场景还原:以前公司组织户外拓展活动,帮助团队建设,其中最重要一个项目就是全体员工(包括女同事,BOSS)在完成其他项目时,到达一个高达四米的高墙没有任何抓点,要求所有人,一个不能少的越过高墙,才能继续进行其他项目。

     

  • 相关阅读:
    jquery之自定义data属性
    js获取显示器、页面等高度 (转)
    A网页高度随B内容而自然变化兼容各种浏览器
    DIV+ul+LI实现表格效果以及div带滑动条
    不同人对待问题不同态度
    MySQL,SqlServer数据库关键字在程序中处理
    一款连接SqlServer的数据库工具
    VB.Net日期格式化的5种使用方法
    MySQL与SqlServer中update操作同一个表问题
    SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写
  • 原文地址:https://www.cnblogs.com/muzhongjiang/p/13714307.html
Copyright © 2020-2023  润新知