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

Java并发 | 11.[方法] join( )和join( long m )等待线程执行完毕

文章目录

  • 1. join( )与join( long m )概述
  • 2. 与static void Thread.sleep( long m )的区别
  • 3. 代码示例

1. join( )与join( long m )概述

二者的基本作用都是「让调用者等待该线程对象执行完毕」,但他们又有些许不同:

  • join( long m ) 至多会让调用者等待m毫秒。若m毫秒过去线程依旧没有结束,则不再等待;
  • join( ) 会让 调用者 进入 Waiting 状态,而 join( long m ) 则会进入 Timed Waiting 状态。

2. 与static void Thread.sleep( long m )的区别

  • Thread.sleep( long m ) 会让调用者进入m毫秒的 Time Waiting 状态,等待时间是固定的;
  • t1.join( ) 会让调用者进入 Waiting 状态,等待时间不固定;
  • t1.join( long m ) 会让调用者进入 至多m毫秒Time Waiting 状态,但等待时间不固定,一旦t1执行完毕就会结束等待。

3. 代码示例

Thread t1 = new Thread(()->{
   try{
       Thread.sleep(10 * 1000);
   } catch (InterruptedException e){
       e.printStackTrace();
   }
});

Thread t2 = new Thread(() -> {
    try{
        t1.join();
    } catch (InterruptedException e){
        e.printStackTrace();
    }
});

// 间隔0.5s以确保t1先启动
t1.start();
Thread.sleep(500);
t2.start();

// 等待0.5s确保t2线程已执行"t1.join()"
Thread.sleep(500);
System.out.println(t2.getState());		// Waiting

image-20220830161612166

相关文章:

  • es重启临时关闭自动分片
  • Git仓库4(分支操作冲突,标签管理)
  • camera特效app(安卓)
  • JAVA代码 企业人力资源管理系统(详细带截图) 毕业设计
  • Spring 事务
  • 海滩的海鸥
  • 医疗系统业务流程
  • 云计算-虚拟化
  • Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】(2022/8/30)
  • 医疗项目 01(项目简介)
  • 用npm 用jest测试
  • 版税激励错配下,创作者如何可持续地盈利?
  • 蓝桥杯实战应用【算法代码篇】-一题三解:计算二进制中1的个数(附Java和C++代码)
  • 一览「数字身份」市场结构:我们将在元宇宙中成为谁?
  • Web3 时代 市场营销的变迁
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • C++类中的特殊成员函数
  • Python打包系统简单入门
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Vue.js-Day01
  • 关于springcloud Gateway中的限流
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊redis的数据结构的应用
  • 前端学习笔记之观察者模式
  • 如何设计一个微型分布式架构?
  • 如何优雅地使用 Sublime Text
  • 深入浅出Node.js
  • 用Visual Studio开发以太坊智能合约
  • Java数据解析之JSON
  • 阿里云移动端播放器高级功能介绍
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 正则表达式-基础知识Review
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (1)Nginx简介和安装教程
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C++17) optional的使用
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • @Autowired和@Resource装配
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [100天算法】-目标和(day 79)
  • [Angular 基础] - 指令(directives)
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [C++] 多线程编程-thread::yield()-sleep_for()