线程的join方法

MIT IDSS深度解析:跨学科融合与系统科学实践 麻省理工学院的IDSS(Institute for Data, Systems, and Society, IDSS)是一个致力于通过先进分析方法推动教育与研究的前沿机构。它将工程学、信息科学和数据科学的方法与社会科学的分析方法相结合,以应对复杂的社会挑战。 阅读详情

 

package fighting;

public class ThreadJoin {

	/**
	 * join方法:
	 * 当A线程执行到了B线程的join方法时,A就会等待,等B线程都执行完,A才会执行。
	 * 
	 *  join方法可以用来临时加入线程执行。
	 * 
	 */
	public static void main(String[] args) throws InterruptedException {
		JoinDemo jd = new JoinDemo();
		Thread t1 = new Thread(jd);
		Thread t2 = new Thread(jd);

		t1.start();
//①		t1.join();//主线程往下执行的过程中,t1要申请加入的运行的线程,也就是申请cpu执行权,这时主线程就会处于冻结状态了。t1就开始执行了,t1就循环70次,t1结束后主线程才会执行。
		          //一个线程在运行过程中,临时加入一个线程,等这个线程执行完,原线程再继续执行。
		t2.start();
//②		t1.join();//这句话放在这里,当主线程执行到这里,就会释放执行权,而这时t1、t2都是运行状态,这时t1、t2就会交替执行,等t1执行完了,不管t2是否执行完,主线程就会继续执行。
		for(int x=0;x<15;x++){
			System.out.println("main..."+x);
		}
		System.out.println("over");
	}

}
class JoinDemo implements Runnable{

	public void run() {
		for(int x=0;x<10;x++){
			System.out.println(Thread.currentThread().getName()+"..."+x);
		}
		
	}
	
}


没有join方法的执行结果:3个线程交替执行

main...0
Thread-1...0
Thread-0...0
main...1
Thread-1...1
Thread-0...1
main...2
Thread-1...2
Thread-0...2
main...3
Thread-1...3
Thread-0...3
main...4
Thread-1...4
Thread-0...4
main...5
Thread-1...5
Thread-0...5
main...6
Thread-1...6
Thread-0...6
main...7
Thread-1...7
Thread-0...7
main...8
Thread-1...8
Thread-0...8
main...9
Thread-1...9
Thread-0...9
main...10
main...11
main...12
main...13
main...14
over
①的执行结果:t1执行完了,主线程继续执行。

Thread-0...0
Thread-0...1
Thread-0...2
Thread-0...3
Thread-0...4
Thread-0...5
Thread-0...6
Thread-0...7
Thread-0...8
Thread-0...9
main...0
Thread-1...0
main...1
Thread-1...1
main...2
Thread-1...2
main...3
Thread-1...3
main...4
Thread-1...4
main...5
Thread-1...5
main...6
Thread-1...6
main...7
Thread-1...7
main...8
Thread-1...8
main...9
Thread-1...9
main...10
main...11
main...12
main...13
main...14
over
②的执行结果:t1,t2交替执行,等t1执行完了,主线程继续执行。

Thread-0...0
Thread-0...1
Thread-0...2
Thread-1...0
Thread-0...3
Thread-1...1
Thread-0...4
Thread-1...2
Thread-0...5
Thread-1...3
Thread-0...6
Thread-1...4
Thread-0...7
Thread-1...5
Thread-0...8
Thread-0...9
Thread-1...6
Thread-1...7
Thread-1...8
Thread-1...9
main...0
main...1
main...2
main...3
main...4
main...5
main...6
main...7
main...8
main...9
main...10
main...11
main...12
main...13
main...14
over

PreScan快速入门到精通第二十一讲驾驶员模型之驾驶员在环 请注意,操纵杆的输出角度是以度为单位的,而方向盘执行器希望其输入是以弧度为单位的。当选择一个支持的方向盘时,PreScan会自动将按钮映射到正确的功能上(如换挡),并设置轴的正确范围(如转向角度)。该系统中的所有其他组件都是为了提供正确的按钮映射,并为所选的方向盘设置正确的范围。对于每一个额外连接的控制器,它们的ID会增加一个,例如第二个控制器的设备ID为1,第三个控制器的设备ID为2,等等。由于所有的方向盘最初放在编译表上的设备ID都是0,所以用户应该先进行正确的调整,将每个控制器设置为正确的设备ID。. 阅读详情

相关推荐

ST MotorControl Workbench 6.2.1 自定义硬件配置避坑指南

本文详细介绍了ST MotorControl Workbench 6.2.1在自定义硬件配置中的常见问题与解决方案,涵盖功率板配置、采样电路校准、电机参数设置及代码生成避坑指南,帮助开发者高效完成电机控制项目开发。

red88的博客 1023

java 多线程join()方法

在A线程中调用了B线程的join()方法时,表示只有当B线程执行完毕时,A线程才能继续执行。 public class JoinDemo { private static class JoinThread extends Thread{ private String name; public JoinThread(String name) { ...

qingcyb的博客 304

强化学习-马尔可夫模型

前文提到了强化学习源自马尔可夫决策过程,本文从马尔可夫概念入手,讲解和马尔可夫有关的模型和概念。在马尔科夫决策过程中,我们有一个智能体,它在一个马尔科夫过程中进行决策,每次决策都会导致状态的转移和获得即时奖励。智能体的目标是通过选择动作来最大化未来奖励的期望值。通常马尔科夫决策过程是个五元组:SAPRγSAPRγS 表示状态集合,代表智能体可能处于的所有状态。A 表示动作集合,代表智能体可以采取的所有动作。

君子之学必日新,日新者日进也。不日新者必日退,未有不进而不退者 8060

并发编程:线程中Join方法的使用示例分析

Join方法的使用,简单来说就是把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行。 比如在线程 B 中调用了线程 A 的 Join()方法,直到线程 A 执行完毕后,才会继续执行线程 B。 代码示例如下所示: package cn.lspj.ch1.base; public class UseJoin { static class A implements Ru...

菜鸟技术栈的专栏 563

浅析图像处理中的名词:Gamma 校正(Gamma变换、Gamma调整)

浅析图像处理中的名词:Gamma 校正(Gamma变换、Gamma调整)

qq_51908382的博客 1万+

【Unity3D插件】XCharts插件完全教程《全网最全》-专栏文章目录

最近在做图表类需求功能的时候,发现了一款强大的Unity3D插件,也就是XCharts图表插件,功能强大,支持多种图表。官方介绍:一款基于UGUI的功能强大、简单易用的数据可视化图表插件。支持折线图、饼状图、饼图、雷达图、散点图、热力图、环形图、K线图、极坐标、平行坐标等十多种内置图表,以及3D饼图、3D金字塔、漏斗图、仪表盘、水位图、象形柱图、甘特图、矩形树图等拓展图表。内置丰富示例和模板,参数可视化配置,效果实时预览,纯代码绘制。支持折线图、柱状图、饼图、雷达图、散点图、热力图等常见图表。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 3194

Java线程中的join()方法

!!为方便理解,文中会一直用“线程A”、“线程B”来举例说明。在线程A中通过线程B去调用此方法,则会使线程A进入阻塞状态,直到线程B执行结束后,线程A才会结束阻塞状态继续执行。当线程A需要获取到某些数据后才能继续执行,这时可以开辟线程B去执行获取数据的操作,并在线程A中通过线程B去调用join()方法,那么当线程B获取到数据后就可以结束线程,线程A可以根据线程B获取到的数据继续执行。

m0_49227604的博客 676

STM32电机PID速度控制

2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料。 2.3.1 解决的问题 解决带编码器直流电机的速度闭环问题。 2.3.2 PID理论 将偏差的比例、积分、微分,通过线性组合构成控制量,用控制量对被控对象进行控制,这样的控制器称为PID控制器。在连续空间中,我们通常探讨模拟PID的控制原理,如图所示: 我们这里用电机速度控制为例,

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 6万+

JAVA并发基础

线程创建与运行 继承Thread类 public class ThreadTest { //继承Thread类并重写run方法 public static class MyThread extends Thread { override public void run ( ) { system.out.println ( "I am a child thread" ) ; } } public sta

solo_jm的博客 295

uniapp [微信小程序] - 实现语音播报功能+实时收款播报,使用同声传译插件做文字转语音播报类似微信/支付宝收款播报小程序语音识别和朗读,手机提醒播放自定义收款语音信息(音频+收款金额+文案)

uniapp-实现语音播报功能,实时收款播报,uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)IOS苹果手机播报没有声音,生成语音并播放,微信小程序接入官方wechatSi(微信同声传译)uniapp小程序使用文字转语音播报类似支付宝收款播报,uni-app 小程序端实现文字语音播报,uniAPP文本转语音,uniapp 文字转语音文字播报,手机静音播放没声音,收款方提示音 文字转语音朗读 同声传译,uniapp小程

🏆 前端领域优质创作者 3795

模型预测控制 (MPC, Model Predictive Control) 算法详解及案例分析

模型预测控制是一种基于模型的控制策略,通过在线求解一个有限时域的优化问题,预测系统的未来行为,并根据预测结果调整控制输入,以实现系统的稳定性和性能优化。

闲人编程的博客 2934

JAVA经典试卷(理工)(2)

一、判断题(本大题共20小题,每小题2分,总计 20分) 1.为类A的一个无参数无返回值的方法fun写方法头,使得使用类名A作为前缀就可以调用它,该方法头的形式为public void fun()。 2.对于构造函数,一般在创建新对象时,系统会自动调用构造方法。 3.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象...

nanaz11的博客 1953

8、使用 TPCx - HCI 基准测试表征 HCI 集群的性能和弹性

本文详细介绍了 TPCx - HCI 基准测试,用于衡量超融合基础设施(HCI)集群的性能、稳定性和扩展性。TPCx - HCI 扩展了 TPCx - V 的理念,通过 Tile 架构和弹性特性,全面评估硬件、虚拟化、存储和网络组件的表现。文章还通过多个实验场景分析了负载均衡、数据布局和重新同步策略对性能的影响,并提出了部署和优化 HCI 集群的建议。

sun99的博客 179

多线程之join方法

一.前言:        在很多情况下,我们都是通过主线程创建并启动子线程的,如果子线程中需要耗费大量的时间计算的话,主线程往往会比子线程先结束,这个时候就会导致有时候主线程想获取子线程计算之后的结果,但是却获取不到。这个时候,我们就可以通过join方法来解决这个问题。 二.join方法的作用: join方法的作用是使所属的线程对象x正常执行run()方法中的任务,而使当前线程z进行无限期的...

striveb的博客 9746

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

线程join()方法join的含义

一直搞不明白Java线程里的join()方法。API给出的解释是: Waits for this thread to die. 那你为啥不叫die()或者waitToDie()或者block()? join明明是参加、结合的意思嘛。 一直苦闷了很久。 今天查知乎后终于明白了! “ fork/join ” 一语惊醒梦中人!!! “ 命名来源于posix标准。子线程join

tech 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

线程join_Java线程之join方法

Join方法使用Join作用:是所属的线程 t 正常继续的执行,是当前的线程(调用子线程t.join方法的线程)阻塞等待,等到线程t执行完后再继续执行(调用子线程t.join方法的线程)。子线程需要做复杂的耗时计算,主线程中如何拿到子线程计算后的结果?代码:public class JoinDemo01 {private static int result = -1 ;public static ...

weixin_39862484的博客 135

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java线程join_java线程方法join的总结

虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结。一、作用Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。具体看代码:public classJoinTest {public static void main(String [] args) throwsInterruptedExcep...

weixin_34649022的博客 374

线程加入:join方法

join方法用于等待其他线程终止 如果线程A中调用了线程B的join方法,那么线程A阻塞,直到线程B执行完后,线程A从阻塞状态转为就绪状态,等待获取CPU的使用权。 join方法要在start方法调用后调用才有效,线程必须启动,再加入。 例子1: 让两个线程顺序打印1,2,3,即线程A打印123,线程A打印完后,线程B再打印 public class Main{ public static void main(String[] args) throws InterruptedException {

yinianxx的博客 453

java 线程join 参数,[java] java 线程join方法详解

join方法的作用是使所属线程对象正常执行run方法,而对当前线程无限期阻塞,直到所属线程销毁后再执行当前线程的逻辑。一、先看普通的无join方法NoJoin.java publicclassNoJoinextendsThread{@Overridepublicvoidrun(){try{longcount=(long)(M...

weixin_42527160的博客 360

线程等待 Join()方法

Join()方法是让一个线程等待另一个线程的完成 下面看个例子: package project11;public class TestJoin extends Thread { public void run() { for(int i= 1;i<=10;i++)//线程循环10次输出 { System.out.println(

qq_39046727的博客 1825

并发编程系列之线程join方法使用方法简介

本博客简介介绍一下java线程的join方法,join方法是实现线程同步,可以将原本并行执行的多线程方法变成串行执行的 如图所示代码,是并行执行的 public class ThreadTest { //private static final Long count = 10000L; public static void main(String[] args){ ...

Nicky's blog 4576

多线程 | join方法

如果thread1在执行过程中被中断,它会捕获InterruptedException异常并打印相应的消息,同时再次设置中断标志。当一个线程调用另一个线程的join方法时,当前线程会进入等待状态,直到被调用的线程执行完毕。这使得开发者可以控制线程的执行顺序,确保某些关键线程在其他线程之前完成执行。因此,在使用join方法时,需要仔细考虑线程之间的依赖关系,避免死锁的发生。InterruptedException异常:当一个线程在等待另一个线程执行完毕时,如果被中断,会抛出异常,如下代码。

蘑菇蘑菇不会开花的专栏 3435

线程通信之join方法

join方法就是挂起调用线程,直到被调用线程执行完毕后再继续执行。例:threadB线程中threadA的join方法,所以threadB需在threadA执行完毕后才继续执行join后的代码,而主线程执行threadB.join(),所以最终主线程需等threadA和threadB执行完毕后才继续。 @Slf4j public class JoinThread { public sta...

奋斗中的老青年 198

线程中的join方法

join方法的作用是同步线程。 1、不使用join方法:当设置多个线程时,在一般情况下(无守护线程,setDeamon=False),多个线程同时启动,主线程执行完,会等待其他子线程执行完,程序才会退出。 def print_number(num): print("-----> %d" % num, time.ctime()) time.sleep(5) ...

weixin_34364071的博客 195

python线程join方法

join方法的作用是同步线程。

爱在深秋 6444

Java线程的join方法

Java线程的join方法可用于暂停当前线程的执行直至目标线程死亡。Thread中一共有三个join的重载方法。   public final void join():该方法将当前线程放入等待队列中,直至被它调用的线程死亡为止。如果该线程被中断,则会抛出InterruptedException异常。   public final synchronized void join(long mill

aedggd的专栏 712
上一篇: Java中继承Thread和实现Runnable这两种创建线程有何区别
下一篇: 什么时候使用多线程
wangpanbaoding
博客等级 码龄18年 42粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值