当前位置: 首页 > wzjs >正文

网络营销资讯网站中国建设银行官网首页

网络营销资讯网站,中国建设银行官网首页,东莞网络营销班,wordpress 显示视频文章目录 核心思想:火箭发射倒计时 🚀最简单易懂的代码示例代码解析运行流程分析 核心思想:火箭发射倒计时 🚀 想象一下发射火箭的场景,在按下最终的发射按钮之前,必须有好几个系统同时完成自检&#xff0…

文章目录

      • 核心思想:火箭发射倒计时 🚀
      • 最简单易懂的代码示例
      • 代码解析
      • 运行流程分析

核心思想:火箭发射倒计时 🚀

想象一下发射火箭的场景,在按下最终的发射按钮之前,必须有好几个系统同时完成自检,比如:

  1. 燃料系统检查
  2. 引擎系统检查
  3. 导航系统检查

控制中心(主线程)必须等待这3个检查全部报告“正常”后,才能下达“发射”指令。

CountDownLatch 就好比是这个场景中的倒计时计数器

  • CountDownLatch latch = new CountDownLatch(3);

    • 这等于在控制中心设置了一个初始值为 3 的倒计时器。意味着我们需要等待3个检查任务完成。
  • latch.await(); (等待)

    • 控制中心(主线程)调用这个方法,然后就进入等待状态。它会一直在这里被阻塞,直到倒计时器的数字变成 0
  • latch.countDown(); (倒数)

    • 每个检查系统(工作线程)在完成自己的任务后,就调用一次这个方法。
    • 每调用一次,倒计时器的数字就减一
    • 当第三个检查系统也调用了 countDown() 后,倒计时器数字变为0,await() 的等待结束,控制中心(主线程)被唤醒,继续执行后续的发射指令。

最简单易懂的代码示例

下面我们就用代码来模拟这个“火箭发射”的场景。

package CoountDownLatch;
import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class SimpleCountDownLatchDemo {public static void main(String[] args) throws InterruptedException {// 1. 创建一个 CountDownLatch,计数器设置为 3//    意味着我们需要等待3个任务完成final CountDownLatch latch = new CountDownLatch(3);// 创建一个线程池来管理我们的检查任务ExecutorService executor = Executors.newFixedThreadPool(3);System.out.println("主控室:准备发射火箭,等待各系统检查...");// 2. 分配3个检查任务给不同的线程for (int i = 1; i <= 3; i++) {final String checkerName = "检查员-" + i;executor.submit(() -> {try {System.out.println("--> [" + checkerName + "] 开始进行系统检查...");// 模拟检查耗时Thread.sleep(new Random().nextInt(2000) + 1000); // 随机耗时1-3秒System.out.println("... [" + checkerName + "] 检查完成,已报告!");} catch (InterruptedException e) {e.printStackTrace();} finally {// 3. 关键!任务完成,调用 countDown(),计数器减一latch.countDown();}});}// 4. 主线程调用 await() 进入等待//    它会一直阻塞在这里,直到 latch 的计数器变为 0System.out.println("主控室:所有检查任务已派出,等待报告...");latch.await();// --- 当所有检查任务都调用了 countDown() 后,主线程才会从 await() 返回,执行以下代码 ---System.out.println("主控室:所有系统检查完成!准备发射!");System.out.println("3... 2... 1... 火箭发射!🚀");// 关闭线程池executor.shutdown();}
}

代码解析

  1. new CountDownLatch(3): 设置了一个需要3个“报告”才能继续的门闩。
  2. executor.submit(...): 我们派出了3个检查员(线程)去并行工作。
  3. latch.countDown(): 这是每个检查员完成工作后必须要做的事——向控制中心报告“我搞定了”。每报告一次,倒计时就减一。
  4. latch.await(): 这是主线程(控制中心)的等待点。它会一直卡在这里,直到收到全部3个“搞定了”的报告。

运行流程分析

  1. 程序启动,main 线程打印 “准备发射火箭…”。
  2. 3个检查员线程被创建并开始并行地执行检查(你会看到3条 “开始进行系统检查…” 的日志)。
  3. main 线程打印 “所有检查任务已派出…” 后,立刻调用 latch.await()进入阻塞等待
  4. 在接下来的几秒内,你会看到检查员们随机地、不按顺序地完成他们的工作,并打印 “检查完成,已报告!”。每完成一个,latch 的计数就减一。
  5. 第三个检查员也完成并调用 countDown() 后,latch 的计数变为0。
  6. main 线程的 await() 立刻被唤醒,程序继续执行,打印出最终的 “火箭发射!🚀”。

这个模式非常适合一个主线程需要等待多个子任务全部执行完毕后再进行汇总或执行下一步的场景。

流程:

  1. 定义Latch数量
  2. 在多线程任务中每次完成就latch.countDown();
  3. 在主线程中调用latch.await();进入等待,它会一直阻塞在这里,直到 latch 的计数器变为 0
  4. 当所有检查任务都调用了 countDown() 后,主线程才会从 await() 返回

文章转载自:

http://AUvCYgz9.xjnjb.cn
http://HNIO4ZbI.xjnjb.cn
http://kkvpoKSn.xjnjb.cn
http://PgpL7zIl.xjnjb.cn
http://7de9ItE7.xjnjb.cn
http://fiGKUptv.xjnjb.cn
http://YjSg0epf.xjnjb.cn
http://eQ4lWH9R.xjnjb.cn
http://BTy62l1A.xjnjb.cn
http://FFh4811Q.xjnjb.cn
http://6Na8GIy2.xjnjb.cn
http://PB11f1DK.xjnjb.cn
http://BSpL0eZ7.xjnjb.cn
http://KU250q4E.xjnjb.cn
http://1guHqpmv.xjnjb.cn
http://rIqe1HUU.xjnjb.cn
http://myNnUtgf.xjnjb.cn
http://PK0nRiyt.xjnjb.cn
http://sTNivXC8.xjnjb.cn
http://31UxAhAD.xjnjb.cn
http://SiOv0JY1.xjnjb.cn
http://ZT6U28Tw.xjnjb.cn
http://FSGta0tA.xjnjb.cn
http://gszq5pIq.xjnjb.cn
http://Ngxbrfti.xjnjb.cn
http://3A3Y01Pa.xjnjb.cn
http://BhYD70vB.xjnjb.cn
http://pccN4pcV.xjnjb.cn
http://HgukTJxC.xjnjb.cn
http://2w2L5kFW.xjnjb.cn
http://www.dtcms.com/wzjs/659391.html

相关文章:

  • 网站建站代理seo是什么意思som
  • 慈溪网站制作wordpress图片轮播
  • 求推荐好的网站建设平台毕业设计模板
  • 深圳建站公司模板北京市工程建设交易中心
  • 学习网站大全wordpress占用内存过大
  • 可以做笔试面试题的网站福清做网站的公司
  • 天津做网站的网络公司所有北京网站建设公司
  • 合作建站协议网站收录提交入口官网
  • seo网站优化排名学做网站网
  • 网上宿迁官方网站泸州房地产新闻
  • 辽宁省建设工程信息网诚信库seo排名课程咨询电话
  • 网站建站公司哪家好购物网站主要的功能模块
  • 网站建设培训ppt淮安网站建设价位
  • 人力资源网站建设可以自己做斗图的网站
  • 顺德高端网站建设百度热搜榜单
  • cf小号自助购买网站竞价托管资讯
  • c 网站建设大作业代码珠海品牌设计公司
  • 做最好的网站新新cn体育门户网站源码(asp
  • 河北网站建设搭建iis7 wordpress伪静态规则
  • 网站的容量网页制作是干嘛的
  • 网站建设的个人条件网络工程师
  • 门户网站建设工作情况汇报wordpress 遍历分类
  • 响应式网站建设新闻建设银行手机银行网站用户名
  • 网站建设怎么加音乐wordpress迁移修改域名
  • 网站开发团队介绍深圳网络推广系统
  • 网站备案 免费在哪里可以做企业官网
  • php网站开发编程软件西安网站 建设
  • 太原便宜做网站的公司电子商务网站建设维护实训报告
  • 佛山智家人网站西安网站建立
  • 广西网站设计服务企业网站建设课程体会