Java多线程(21)——JUC——tools系列(1)——CountDownLatch——待完成

1.概述

  • CountDownLatch有两种典型用法:
    • 1.让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒
      • 将 CountDownLatch 的计数器初始化为n :new CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1
      • CountDownLatch主要有两个方法,
        • 当一个或多个线程调用await方法时,调用线程会被阻塞
        • 其他线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞)
      • 当计数器的值变为0时,因调用await方法被阻塞的线程会被唤醒,继续执行
    • 2.实现多个线程开始执行任务的最大并行性
      • 注意是并行性,不是并发,强调的是多个线程在某一时刻同时开始执行。类似于赛跑,将多个线程放到起点,等待发令枪响,然后同时开跑。做法是初始化一个共享的 CountDownLatch 对象,将其计数器初始化为 1 :new CountDownLatch(1),多个线程在开始执行任务前首先 coundownlatch.await(),当主线程调用 countDown() 时,计数器变为0,多个线程同时被唤醒。

2.使用案例

使用案例1:

  • 需求:模拟6位同学在上仔细,陆续离开,班长最后锁门走人

不使用CountDownLatch<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值