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

做网站怎么与客户谈判浏览器下载安卓版

做网站怎么与客户谈判,浏览器下载安卓版,免费ps软件网站,安装网站模版视频最近准备面试刷题,遇到一个多线程问题:如何让 A、B、C 三个线程同时启动,却要按顺序先后执行(A -> B -> C)。直觉上,“同时启动”意味着线程调度权交给操作系统,执行顺序理应不确定。那如…

最近准备面试刷题,遇到一个多线程问题:如何让 A、B、C 三个线程同时启动,却要按顺序先后执行(A -> B -> C)。

直觉上,“同时启动”意味着线程调度权交给操作系统,执行顺序理应不确定。那如何控制顺序?若让后一个线程等待前一个执行完毕,似乎又违背了“同时启动”的要求。

最初尝试 Thread.join():让 B 等待 A 执行完,C 等待 B 执行完,再按顺序启动它们。但很快发现问题——如果 B 和 C 的初始化逻辑依赖 A 对象,它们甚至无法在 A 启动前被创建。这本质上只是“顺序启动”,而非题目要求的“同时启动但顺序执行”。

理解关键点:

  • start() 仅通知系统线程就绪,run() 方法内的逻辑何时执行取决于 CPU 调度。
  • “启动”是状态,“执行”是动作,“等待”是一种阻塞状态。
  • 核心在于控制 run() 方法中关键逻辑的执行顺序,而非启动顺序本身。

使用 CountDownLatch 实现: CountDownLatch 是一个类似发令枪的同步工具。其核心是一个计数器:初始化设定计数值,线程调用 await() 阻塞等待;其他线程完成任务后调用 countDown() 减 1;当计数器归零,所有等待线程被唤醒继续执行。

利用两个 CountDownLatch:一个控制 B 等待 A 完成,一个控制 C 等待 B 完成。

public class ThreadOrder {public static void main(String[] args) {// 控制B等待A的信号CountDownLatch latchBwaitsA = new CountDownLatch(1);// 控制C等待B的信号CountDownLatch latchCwaitsB = new CountDownLatch(1);Thread a = new Thread(() -> {System.out.println("A starts");latchBwaitsA.countDown(); // A执行完毕,释放B线程的阻塞});Thread b = new Thread(() -> {try {latchBwaitsA.await(); // B等待A完成信号System.out.println("B starts");latchCwaitsB.countDown(); // B执行完毕,释放C线程的阻塞} catch (InterruptedException e) {Thread.currentThread().interrupt();}});Thread c = new Thread(() -> {try {latchCwaitsB.await(); // C等待B完成信号System.out.println("C starts");} catch (InterruptedException e) {Thread.currentThread().interrupt();}});// 真正的“同时启动”a.start();b.start();c.start();}
}

输出结果:

A starts
B starts
C starts

最关键的是,三个线程的 start() 方法几乎在同一时刻被调用,满足了“同时启动”的要求;而 run() 方法中关键逻辑的执行顺序(打印语句)则通过 CountDownLatch 实现了严格的 A -> B -> C 顺序,没有破坏“同时启动”的前提。

http://www.dtcms.com/a/468744.html

相关文章:

  • 公司开通网站app网站平台建设方案
  • 想要一个免费的网站秦皇岛网站制作哪个好
  • 学网站开发需要多长时间多媒体展厅的互动展示
  • 视频网站管理系统哪里有做网站推广的
  • 汉口网站推广优化智慧团建手机登录官网
  • 外贸长尾关键词挖掘网站英国小子做房产网站
  • 江西建站哪家专业建设网站租服务器
  • 如何区别网站是自适应还是企业建设网站软件
  • 网站开发的主要流程开发网站开源免费
  • 全国最大的网站建设公司首页英文
  • 给公司做兼职维护网站多少钱wordpress 多模板
  • 如何搭建网站赚钱网站开发公司多少钱
  • 清苑建设局网站做网站logo的网站
  • 商城网站建设运营方案上海制作网页的公司有哪些
  • 企业网站搭建多少钱专业网络推广方案
  • 商洛网站建设电话免费做店招的网站
  • 免费企业网站源码下载seo关键词优化排名公司
  • 杏坛网站设计中国广电山东网络有限公司
  • 163网站是jsp做的吗方维网络的服务范围
  • c net做的网站网站建设项目工作分解
  • 微网站建设一般多少钱海纳企业网站建设
  • 如何做英文版网站智库建设网站
  • 常州建站公司模板深圳电梯广告制作公司网站
  • 天津建筑网站建设wordpress 短链插件
  • 广州网站提升排名服装设计网站知乎
  • 北京网站设计技术手机端steam怎么下载
  • 网站建设程序都有哪些博客网站怎么搭建
  • 苏州网站建设集团手机上如何上传wordpress
  • 五华建设银行网站wordpress添加icp
  • 易网官方网站google移动网站建站十大原则