Java面试之有三个线程T1,T2,T3,如何保证顺序执行?

news/2024/11/13 22:36:13/文章来源:https://www.cnblogs.com/xswz/p/18544980

前言

本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!有三个线程T1,T2,T3,如何保证顺序执行?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘

*** 12万字的java面试题整理 ***

有三个线程T1,T2,T3,如何保证顺序执行?

在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。为了确保三个线程的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成。

实际上先启动三个线程中哪一个都行, 因为在每个线程的run方法中用join方法限定了三个线程的执行顺序。

public class JoinTest2 { // 1.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行public static void main(String[] args) {final Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("t1"); }}); final Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {try {// 引用t1线程,等待t1线程执行完t1.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("t2");}});Thread t3 = new Thread(new Runnable() {@Overridepublic void run() {try {// 引用t2线程,等待t2线程执行完t2.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("t3");}});t3.start();//这里三个线程的启动顺序可以任意,大家可以试下!t2.start();t1.start();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833186.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Clion中快速生成函数中形参注释及添加函数说明

快速生成函数中形参注释 只需要在函数前输入/**,然后按回车,这样即可快速生成如下函数形参注释。 新增函数描述 在设置界面中的搜索框中输入Code Generation,然后勾选 如下选择框,这样就可以在如上生成的代码快中新增函数描述栏 说明:有些版本可能找不到,按如下位置查找…

痞子衡嵌入式:在i.MXRT启动头FDCB里配置串行NOR Flash多个寄存器的注意事项

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是在FDCB里配置串行NOR Flash多个寄存器的注意事项。关于使用 i.MXRT 启动头 FDCB 来设置 Flash 内部寄存器,痞子衡写过如下两篇文章,在进入本文之前,建议大家先阅读下这两篇文章,有个初步了解。《在FDCB里…

Nginx_基础

Nginx_基础 Nginx 基础一、Nginx 简介1.1 简介1.2 正向代理和反向代理 二、基本命令 三、配置格式3.1 基本配置格式3.2 时间和空间单位3.3 官方配置模板 四、部署静态网站4.1 增加配置4.2 检查配置4.3 重载配置 五、实现负载均衡5.1 部署后台服务5.2 负载均衡配置5.3 负载均衡策…

【Unity】对TMPAsset打包记录

TMPAsset中对于SourceFontFile引用,不会打包到AssetBundle中

4G核心网学习之4G EPS 中的 PDN Connection

PDN PDN(Packet Data Network分组数据网络),严格意义上讲可以分为内部 PDN 和外部 PDN:内部 PDN 即 EPS 系统中的分组数据网络,是 EPS 系统实体(e.g. MME、HSS、SGW、PGW、PCRF)之间的网络通信;而外部 PDN 即 EPS 系统之外的分组数据网络,例如:3GPP 网络 CDMA1X、Int…

spring初始学习

开始学习了容器 bean 依赖注入 Spring框架是一个开源的Java平台,它提供了全面的基础设施支持,以便你可以更容易地开发Java应用程序。以下是Spring框架中关于容器、Bean和依赖注入的一些基础知识点:Spring容器(Spring Container) Spring容器是Spring框架的核心,负责实例化…

sherpa-onnx:跨平台、多语言的语音处理工具包

Sherpa-onnx 是一个基于 ONNX 运行时的开源语音处理库,支持多种语音相关任务,包括语音识别、语音合成、说话人识别、语言识别等。它不仅支持多种编程语言(如 C++、C、Python、JavaScript、Java、C# 等),还支持多种操作系统和硬件平台(如 Windows、macOS、Linux、Android、…

基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR

1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印):设置SNR=40db将数据导入matlab显示星座图:设置SNR=35db将数据导入matlab显示星座图:仿真操作步骤可参考程序配套的操作视频。2.算法涉及理论知识概要1024QAM是一种高级调制方式,可以携带更多的信息位(10…

Hive的分区和排序

一、Hive的分区(十分重要) 1、分区是什么 答:我们可以把一个大的文件分隔成一个个小的文件,这样每次操作一个小文件就很方便了 2、为什么要进行分区 答:通过分区,当我们查询的时候,可以只扫描与条件相关的分区,这样做,避免了全局扫描,加快查询速度 1、静态分区(SP) 静…

项目冲刺4-3

仓库地址:https://github.com/bitpurleclude/GDUT-Goofish.git这个作业属于哪个课程 (https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/join?id=CfDJ8AOXHS93SCdEnLt5HW8VuxT_rAhbZKO3TfjMmbv1B0Re5Fp2d0_QACha2ZoYZ4fxF-ZKCCAhfJl7B8mvCfesLYE02X8T6kx_2R8w0SR-ykrgDVRKW…

【Linux】git note -v command not found

安装note.js Node.Js中文网 『Win+E』『此电脑』右键点击『属性』『高级系统设置』-『环境变量』『系统变量』-『NOTE_PATH』“C:\Program Files\nodejs”『用户变量』-『Path』“C:\Program Files\nodejs”『Win+R』重新启动控制台『cmd』-“$NOTE -v” 双击重新启动『Git Ba…

2024.11.13 DP题单

录制唱片 你刚刚继承了流行的 “破锣摇滚” 乐队录制的尚未发表的 \(N\)(\(1\leq N\leq 20\))首歌的版权。你打算从中精选一些歌曲,发行 \(M\)(\(1\leq M\leq 20\))张 CD。每一张 CD 最多可以容纳 \(T\)(\(1\leq T\leq 20\))分钟的音乐,一首歌不能分装在两张 CD 中。CD…