Java Thread join() 用法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情


Java Thread中, join() 方法主要是让调用该方法的thread完成run方法里面的东西后, 再执行join()方法后面的代码。示例:

  1. class ThreadTesterA implements Runnable {  
  2.   
  3.     private int counter;  
  4.   
  5.     @Override  
  6.     public void run() {  
  7.         while (counter <= 10) {  
  8.             System.out.print("Counter = " + counter + " ");  
  9.             counter++;  
  10.         }  
  11.         System.out.println();  
  12.     }  
  13. }  
  14.   
  15. class ThreadTesterB implements Runnable {  
  16.   
  17.     private int i;  
  18.   
  19.     @Override  
  20.     public void run() {  
  21.         while (i <= 10) {  
  22.             System.out.print("i = " + i + " ");  
  23.             i++;  
  24.         }  
  25.         System.out.println();  
  26.     }  
  27. }  
  28.   
  29. public class ThreadTester {  
  30.     public static void main(String[] args) throws InterruptedException {  
  31.         Thread t1 = new Thread(new ThreadTesterA());  
  32.         Thread t2 = new Thread(new ThreadTesterB());  
  33.         t1.start();  
  34.         t1.join(); // wait t1 to be finished  
  35.         t2.start();  
  36.         t2.join(); // in this program, this may be removed  
  37.     }  
  38. }  
  39. class ThreadTesterA implements Runnable {
    
    	private int counter;
    
    	@Override
    	public void run() {
    		while (counter <= 10) {
    			System.out.print("Counter = " + counter + " ");
    			counter++;
    		}
    		System.out.println();
    	}
    }
    
    class ThreadTesterB implements Runnable {
    
    	private int i;
    
    	@Override
    	public void run() {
    		while (i <= 10) {
    			System.out.print("i = " + i + " ");
    			i++;
    		}
    		System.out.println();
    	}
    }
    
    public class ThreadTester {
    	public static void main(String[] args) throws InterruptedException {
    		Thread t1 = new Thread(new ThreadTesterA());
    		Thread t2 = new Thread(new ThreadTesterB());
    		t1.start();
    		t1.join(); // wait t1 to be finished
    		t2.start();
    		t2.join(); // in this program, this may be removed
    	}
    }


 t1启动后,调用join()方法,直到t1的计数任务结束,才轮到t2启动,然后t2也开始计数任务。可以看到,实例中,两个线程就按着严格的顺序来执行了。

如果t2的执行需要依赖于t1中的完整数据的时候,这种方法就可以很好的确保两个线程的同步性。

异次元发卡最新漏洞0day(XSS组合拳) 异次元商店头像上传处存在存储型XSS注入(user、admin均存在)。其中,user处有过滤,admin无。 将恶意脚本插入后,管理员访问用户管理页面即可执行恶意脚本。 恶意脚本执行后,会新增一个管理员用户,进而获得权限。鉴于漏洞还没有泛滥,而且很多站都有漏洞。EXP暂时不公开。需要学习可以加入知识星球 阅读详情

相关推荐

卷积神经网络中的边缘检测:从Canny算法到深度学习(PyTorch实现)

本文系统梳理了边缘检测从经典Canny算法到深度学习方法的演进,重点解析了Canny算法的数学原理及其对卷积神经网络设计的深远影响。通过PyTorch实战,详细演示了如何构建并训练一个基于HED架构的深度学习边缘检测模型,并探讨了模型优化、评估及与传统方法融合的高级技巧。

jenkins8butler的博客 129

Thread.join 解析

/** * Waits at most {@code millis} milliseconds for this thread to * die. A timeout of {...

晚晴小筑 636

【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南

本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。

weixin_42126677的博客 284

Java多线程join()方法

Java多线程join()方法

weixin_54963748的博客 3678

java并发:Thread中的join方法

join()方法用于等待调用该方法的线程完成执行。当一个线程调用另一个线程的join()方法时,它会暂停自己的执行,直到被调用的线程完成执行才会继续执行。join()

qq_51110877的博客 698

Java Threadjoin 方法详解

摘要:Java中的join()方法用于线程同步,让调用线程等待目标线程执行完毕。该方法有三个重载版本:无限等待、带超时等待和精确时间控制。其底层通过synchronized和wait()/notifyAll()机制实现,适用于协调线程执行顺序的场景,如数据初始化、分块处理等。使用时需处理可能抛出的InterruptedException。示例展示了等待单个或多个线程完成的用法,体现了该方法在多线程编程中的重要性。

嘻嘻哈哈学技术 1753

javaThreadjoin方法

javaThreadjoin方法

听海边涛声 646

Java Thread join()用法

Java Thread join()用法

wanxiaotao12-126-com 132

java thread join()_Java Thread join()用法

Java Thread中, join() 方法是让调用该方法的主线程执行run()时暂时卡住,等run()执行完成后, 主线程再调用执行join()后面的代码。示例:class ThreadTesterA implements Runnable {private int counter;@Overridepublic void run() {while (counter <= 10) {Sy...

weixin_36072709的博客 257

java方法中 thread_java Thread方法中join()用法

Java Thread中, join() 方法主要是让调用改方法的thread完成run方法里面的东西后, 在执行join()方法后面的代码。示例:public class ThreadTester {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(new Thre...

weixin_33564753的博客 182

java thread.join()用法研究

提示:thread.join()应该是让当前线程block住,等thread执行完之后,再继续执行 。 比如有3个线程在执行计算任务,必须等三个线程都执行完才能汇总,那么这时候在主线程里面让三个线程join,最后计算结果既可。

mars914的专栏 1928

Otsu阈值算法:图像分割中的最佳分界线原理与实践

图像分割是计算机视觉中的基础技术,通过将图像划分为具有特定意义的区域,为后续分析提供结构化数据。Otsu阈值法作为一种经典的自适应阈值分割算法,其核心原理是通过最大化类间方差来自动确定最佳分割阈值,无需人工干预。这种方法特别适用于具有双峰直方图的图像,如医学影像中的组织分离、工业检测中的缺陷识别等场景。从技术实现来看,Otsu算法将阈值选择转化为优化问题,通过迭代计算找到使前景与背景差异最大的阈值点。在实际工程中,结合OpenCV等优化库可以实现毫秒级处理,与深度学习模型配合使用时,既能保证实时性又能提高准

weixin_33906657的博客 230
上一篇: Java多线程 -- Map容器性能比较
下一篇: Java 5种字符串拼接方式性能比较
Jenkins2012
博客等级 码龄12年 29粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值