Java 多线程中 Thread类 join方法的使用

Java的多线程:Thread类的Join()方法 [说明:刚接触多线程时,弄不明白Join()的作用,查阅了三本书,都不明不白。后来经过自己的一番试验,终于弄清了Join()的本质。大家看看我这种写法是否易懂,是否真的写出了Join()的本质,多提宝贵意见。]   Thread类的Join()方法能够将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,线程A将插入线程B之前,直到线程A执行完毕后,才会继续 阅读详情

JDK 对 Thread 类中 join 方法 描述比较模糊

这里写图片描述


简单的来说就是等待某个线程执行完毕后在执行后面的代码

    public static void main(String[] args) throws InterruptedException {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 5; i++) {
                    out.println(i);
                }
            }
        };

        Thread thread = new Thread(runnable);
        thread.start();
        thread.join();
        out.println("呵呵");
    }

输出 ↓

0
1
2
3
4
呵呵


如果把 thread.join()这段代码注释

输出 ↓

呵呵
0
1
2
3
4

这次父线程没有等待子线程执行完毕就执行完毕了,所以就提前【呵呵】了

使用Java的Thread类的join()方法实现线程同步 在某些情况下,我们可能希望等待一个线程执行完毕后再执行其他线程,这时就可以使用Thread类的join()方法。Thread类的join()方法的作用是等待调用该方法的线程执行完毕后再继续执行当前线程。具体而言,当一个线程调用另一个线程的join()方法时,当前线程将会被阻塞,直到被调用join()方法的线程执行完毕。接着,我们使用t1.join()、t2.join()和t3.join()方法来实现线程的同步。通过使用Thread类的join()方法,我们可以实现线程的同步,确保线程的执行顺序。 阅读详情

相关推荐

[Unity Demo]从零开始制作空洞骑士Hollow Knight第四集:制作更多的敌人

大家好久不见,终于放完中秋假期可以回自己家里打代码了,上一期我介绍了为什么和如何导入2D toolkit以及制作一个完整的敌人(就是那只蚊子包括了精灵,动画,状态机行为以及脚本)现在不妨趁热打铁制作更多的敌人。

dangoxiba的博客 1974

Java多线程:join方法的使用

在上面的例子中多次使用到了Thread类的join方法。我想大家可能已经猜出来join方法的功能是什么了。对,join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定...

Jelly_JAVA博客 278

GitHub 镜像站点

国内访问 GitHub 有时会遇到速度慢或不稳定的情况,这时 GitHub 镜像站点就能帮上忙。它们通过代理或缓存机制,让你更顺畅地浏览仓库、下载资源甚至克隆代码。希望这些信息能帮你更顺畅地访问 GitHub 资源。下面表格汇总了一些常见的镜像站及其主要用途。

BillKu的博客 6万+

关于Java多线程Thread的join用法

多线程和子线程,我们称调用者为主线程,而被调用者为多线程。 主线程中开启子线程后,如果没有其他操作,则主线程可能会优先子线程执行完成。 场景:主线程中开启了子线程,在主线程退出之前需要调用子线程执行结果,这时候我们就需要用到join()操作。 设计一个源码测试下运行结果 设计子线程,SubThread.java public class SubThread extends Thread

阿拉丁de梦的博客 443

new delete 详解

常规的new 和 delete 当需要内存时,可以使用new申请内存,但在用完内存时应当使用delete 去归还内存,以防止内存泄漏,具体使用方案见下面代码: int* ps = new int ; // 使用new 申明变量空间 ... ... delete ps ; '// delete 删除所申明的变量空间 上述代码将删除ps 指针指向的内存空间,但不会删除指针本身,即仍然可以使用该指针去指向其他int 类型的变量。new 和 delete 一定需要成对的使用否则极易发生内存泄漏。 注意:不

qq_42138448的博客 6938

【技术解析】Point-NeRF:如何通过点云优化加速神经辐射场渲染

本文深入解析了Point-NeRF技术,它通过引入3D点云作为几何先验,有效解决了传统神经辐射场渲染速度慢的痛点。该方法利用神经点云构建局部辐射场,结合点剪枝与生长策略进行动态优化,在保证高渲染质量的同时,实现了高达30倍的训练加速,为高效3D场景重建提供了新范式。

weixin_29159127的博客 268

Thread join方法的用途

主线程中会创建多个子线程做一些事情,主线程要用到这些子线程处理的数据,因此它需要等待所有的子线程处理完之后才继续运行。这就要用到join方法了。 转载于:https://www.cnblogs.com/hustdc/p/8902176.html...

weixin_34319999的博客 112

医学图像处理实战:利用OpenSlide解析病理SVS切片的完整解决方案

本文介绍了使用openslide处理病理SVS切片的完整流程,从基础安装到科研应用。主要内容包括:1)SVS切片特点及openslide工具简介;2)环境配置与软件安装;3)基础操作:读取切片、查看信息、可视化不同层级图像;4)进阶操作:坐标裁剪与批量处理;5)科研方向拓展:结合AI模型进行病理分割分类、量化分析及可视化报告。教程提供了完整的代码示例,帮助毕业设计学生快速掌握病理图像分析的核心技能。

m0_71589036的博客 311

thread.join()作用

thread_join.c源代码:   #include                  //pthread_join() #include                   //sleep() #include                    //printf()   void *thread(void *str)               //返回指针值的函数 {

tuolaji8的专栏 2395

【目标检测-YOLO】YOLOv5-v5.0-yolov5s网络架构详解(第一篇)

源码:GitHub - ultralytics/yolov5 at v5.0 由于YOLO v5 代码库在持续更新,如上图,有多个版本,每个版本的网络结构不尽相同。以下内容以 v5.0 为准,网络结构选用 yolov5s。 为了方便画图和理解网络结构,选用可视化工具:Netron 网页版进行可视化, 然后使用PPT作图。 在Releases · ultralytics/yolov5 · GitHub找到 v5.0中的Assets 中的yolov5s.pt并下载该权重。 下图为直接......

博观约取,厚积薄发 2万+

【实战项目开发技术分享】ROS1.0、ROS 2.0和CyberRT开源通信框架对比

随着机器人和自动驾驶技术的飞速发展,开源通信框架在机器人、自动驾驶行业扮演着重要的角色。ROS1.0是一个广泛应用于机器人领域的开源框架,ROS 2.0是其改进版本,而CyberRT是Baidu Apollo自动驾驶平台的通信框架。ROS和ROS 2.0都注重灵活性和共享性,适用于各种机器人应用。CyberRT则专注于实时性和高性能,适用于自动驾驶等对实时性要求较高的场景。选择适合的框架取决于具体应用需求和开发者的偏好。

xiewf的博客 2万+

Thread类的join方法使用

//看文档的说明很难理解join是怎么用的,其实很简单 package com.test.thread; public class Join { static HostThread host; static GuestThread guest; public static void main(String[] args) { host = new HostThread(

always4321的专栏 496

Python - 多页pdf 合称为一页

尝试使用 ReportLab 来重画 pdf,但探索起来有点麻烦。重要的是解决手头这个问题,所以就算方法蠢,但简单完事。以下生成结果,最有一页 pdf 可能会显示在第一页,手动编辑下 pdf 即可;或者你也可以修改代码逻辑来完善。打印ppt,一页占用A4纸比较浪费,想多页合成一个 A4大小;安装 fitz,单独安装 fitz 使用可能会报错。将 PDF 拆分为 图片来保存。

AI工程化、开源分享、文档翻译、代码笔记 1425

java多线程Thread类的join方法

有线程t1、t2,t2调用了t1的join方法,则t2需要等待t1运行结束才能运行完成。 例子: public class ThreadJoinTest { public static void main(String[] args){ System.out.println("程序开始运行..."); //t2内部使用t1,所以这里t1使用final...

hfutflx的博客 167

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java 线程 thread.join_java多线程类Thread的join方法

最近被问到如何让多线程按顺序执行,想到了join,但是不知道join内部具体的实现,翻看源码记录下。先看个小例子,目标是让线程按照T3,T2,T1的顺序执行public class T1 implements Runnable {private String threadName;public T1(String name){this.threadName = name;}public void ...

weixin_39547298的博客 143

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

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

java多线程中,关于Thread类的join()方法释放锁的一些问题

join()方法是否会释放锁?释放什么锁?

inforest27的博客 340

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Thread 的 join() 方法

关于 Thread 的 join 方法 1、join() 方法说明2、代码演示2.1 添加 join() 方法后2.2 添加 join() 方法前2.3 对比说明3、源码理解   线程模块,计划用一个系列博文整理总结。上一篇博文:  《线程系列1:创建线程》     1、join() 方法说明   join() 是Thread的实例方...

STRANGE-P 的博客 1万+

浅谈Thread类及常见方法与线程的状态(多线程编程篇2)

如何简单的去使用jconsloe 查看线程 (多线程编程篇1)_如何查看weblogic当前线程-优快云博客距离笔者发布本系列第一篇博客已过去一月有余,本篇博客,笔者将继续介绍已经整理学习好的内容既帮助未来的自己复习,也为正在阅读的你提供参考和思考.本篇博客的内容正如标题所示,笔者主要将介绍一下内容1.Thread类,并通过举例演示常见方法2.向大家介绍线程的状态.愿我们一起进步!

cjejwe的博客 2064

进程与多线程,Thread类,线程中断(interrupt方法),CPU的随机调度之间的小关系

这是新的系列开始,进入了JavaEE的范围了,虽然已经学了挺久,但是今天才开始写博客。那么下面就来学习一下我们多线程的学习吧。在Java中,线程中断是一种协作机制,用于请求一个线程停止其正在执行的任务。中断本身不会立即停止线程,而是通过设置一个中断标志来通知线程应该停止。线程必须检查这个标志并决定如何响应。InterruptedException:当线程在阻塞状态被中断时抛出,自动清除中断标志。处理方式决定了线程是否继续执行。isInterrupted():允许线程在任何时刻检查中断标志,而不清除它。

2302_81249757的博客 1033

Java多线程中join、yield、sleep方法详解

在Java多线程编程中,Thread类是其中一个核心和关键的角色。因此,对该类中一些基础常用方法的理解和熟练使用是开发多线程代码的基础。本篇主要总结一下Thread中常用的一些静态方法的含义及代码中的使用。 sleep方法 源码如下: /** * Causes the currently executing thread to sleep (temporarily cease ...

Java成魔之路 631

多线程——Thread类的常用方法

本博客主要针对Thread类的常用的方法进行介绍,包括:构造方法、静态方法和非静态方法,作为自我总结。1. Thread类的构造方法根据Java api,Thread类的构造方法共有8个:Thread() Thread(Runnable target) Thread(Runnable target, String name) Thread(String name)----------Thread(T

gxx_csdn的博客 3596

java join方_java基本教程之join方法的详解

java基本教程之join方法的详解本章涉及到的内容包括:1. join()介绍2. join()源码分析(基于JDK1.7.0_40)3. join()示例1. join()介绍join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解:复制代码 代码如下:// 主线程public class F...

weixin_33023873的博客 165

java中gettext方法_Java多线程2:Thread中的实例方法

Thread类中的方法调用方式:学习Thread类中的方法是学习多线程的第一步。在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别:1、this.XXX()这种调用方式表示的线程是线程实例本身2、Thread.currentThread.XXX()或Thread.XXX()上面两种写法是一样的意思。这种调用方式表示的线程是正在执行Thr...

weixin_39807352的博客 198

Java多线程Thread及其原理深度解析

详细讲述 Java 多线程创建方式,Thread 源码解析,Thread 常用方法源码解析,非常细节,深入到看 jdk 源码

蒋大钊的博客 1348

java join yield_Java多线程中join、yield、sleep方法详解

在Java多线程编程中,Thread类是其中一个核心和关键的角色。因此,对该类中一些基础常用方法的理解和熟练使用是开发多线程代码的基础。本篇主要总结一下Thread中常用的一些静态方法的含义及代码中的使用。sleep方法源码如下:/*** Causes the currently executing thread to sleep (temporarily cease* execution) fo...

weixin_35709851的博客 123
上一篇: Java多线程同步 synchronized 关键字的使用
下一篇: Java 多线程 - 守护线程
httpfirewall
博客等级 码龄10年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值