CountDownLatch学习理解

最近因为一个需求接触到了CountDownLatch:一个界面的渲染需要多个接口返回的数据,所以接口全部返回才能执行渲染操作。
通过一个例子理解CountDownLatch:

利用CountDownLatch等待子线程全部执行完

妈妈有四个孩子,到午餐时间,妈妈需要等待孩子们全部吃完才开始收拾碗筷,每个孩子吃完就会告诉妈妈“我吃完啦”,当四个孩子全吃完了,妈妈开始收拾。
与CountDownLatch的对应关系:妈妈代表主线程,四个孩子代表子线程,每个子线程的任务就是吃饭,妈妈等待四个孩子吃完代表妈妈定义了一个CountDownLatch,传入的计数参数为4,妈妈等待表示主线程调用了CountDownLatch.await()方法,“我吃完啦”表示子线程任务执行完并调用了CountDownLatch.countDown()方法,当四个孩子全部吃完后代表CountDownLatch的计数达到了设置值4,则await方法取消阻塞,妈妈开始收拾。

利用CountDownLatch阻塞子线程控制同时启动

妈妈的四个孩子都很乖,妈妈给他们盛好饭菜后让他们开始吃他们才会开始吃。
对应关系:同样妈妈和孩子分别是主线程和子线程,准备好饭将孩子都安排入座表示子线程都已经定义好,妈妈和孩子的默契表示主线程向每个子线程传了一个设置计数值为1的CountDownLatch对象,孩子吃饭前等妈妈的指令表示四个子线程执行了CountDownLatch.await() 方法阻塞等待,妈妈一声令下执行了CountDownLatch.countDown()方法,四个子线程的计数达到设置值1,同时取消阻塞开始吃饭。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值