join()方法作用

Thread系列:join()方法的作用是什么 join()方法的作用是让调用该方法的线程在执行完run()方法后,再执行join()方法后面的代码。 线程调动start()方法,异步执行run()方法,因为是异步,所以start()方法后面的代码可以直接执行。代码演示: public class UP1013 { /** * @param args */ public static void main(String[] args) { Thread thread = new Thread(new myThread 阅读详情

join()方法作用

当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1

废话不多说看代码:

package com.toov5.thread;

public class JoinThreadTest {

       public static void main(String[] args) {
        
        Thread t1 = new Thread(new Runnable() {
                
                @Override
                public void run() {
                    for(int i=0;i<10;i++){
                        try {
                            Thread.sleep(1000);
                        } catch (Exception e) {
                            // TODO: handle exception
                        }
                        System.out.println(Thread.currentThread().getName()+"i"+i);
                    }
                    
                }
            });
        t1.start();
        
        //主线程在此调用t1.join()方法,就认为主线程应该把执行权交给t1 让t1执行完毕后再执行主线程
        try {
            t1.join();
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
//        t1.start();
        
        for(int i=0; i<10;i++){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             System.out.println("main"+"i"+i); 
        }
       
    }
    
    
}

如果先调用join的方法在执行 启动线程

package com.toov5.thread;

public class JoinThreadTest {

       public static void main(String[] args) {
        
        Thread t1 = new Thread(new Runnable() {
                
                @Override
                public void run() {
                    for(int i=0;i<10;i++){
                        try {
                            Thread.sleep(1000);
                        } catch (Exception e) {
                            // TODO: handle exception
                        }
                        System.out.println(Thread.currentThread().getName()+"i"+i);
                    }
                    
                }
            });
//        t1.start();
        
        //主线程在此调用t1.join()方法,就认为主线程应该把执行权交给t1 让t1执行完毕后再执行主线程
        try {
            t1.join();
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        t1.start();
        
        for(int i=0; i<10;i++){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             System.out.println("main"+"i"+i); 
        }
       
    }
    
    
}

结果分别:

和

 

其实质就是类似于一个加入线程

 join(), 当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续
 join(int), 可以等待指定的毫秒之后继续

package com.toov5.test;

public class demoJoin {

    public static void main(String[] args) {
    Thread t1= new Thread() {
            @Override
            public void run() {
                for(int i =0; i<10; i++) {
                    System.out.println(getName()+"...bbbbb");
                }
                 
            }
            
        };
        
    Thread t2 = new Thread() {
        public void run() {
            for (int i = 0; i < 10; i++) {
                if (i==2) {
                    try {
                        t1.join();
                    } catch (InterruptedException e) {
                        
                        e.printStackTrace();
                    }
                }
                System.out.println(getName()+"...aaaaa");
                
            }
            
        };
    };    
        
       t1.start();
       t2.start();
    
    }
    
     
}

可以看到:

aaa执行了两次后 就开始执行 bbb一直执行完毕 才可以执行 aaaaaa

 也可以执行插队时间 join(1)    //过了指定的插队时间后 两个线程交替执行

 

 

IPD(集成产品开发)管理之道 IPD,是集成产品开发(Integrated Product Development)的缩写,它是集成了众多管理模型和理论、众多企业最佳管理实践的一整套体系,可以帮助企业快速响应市场变化、缩短产品上市时间、减少资源浪费、提高生产力,最终取得商业成功。IPD的思想最早来源于美国PRTM公司出版的《产品及生命周期优化法》一书中,该书详细描述了IPD模式所包含的各个方面。但IPD在中国的普及,源于IBM和华为的推行使用。IPD作为一套先进的产品研发管理模式,其成功的基础是功能部门和各团队之间的密切配合。 阅读详情

相关推荐

USB接口ESD防护设计实战:从金属外壳到信号线的完整避坑指南

本文深入探讨USB接口ESD防护设计的实战要点,聚焦金属外壳作为ESD能量泄放关键通道的处理策略。文章详细解析了从外壳接地路径控制、信号线TVS管选型与布局,到PCB分区及电源线滤波等完整设计流程,旨在帮助硬件工程师构建系统级防护,避免常见设计误区,确保产品通过严苛的静电测试。

k8l9m0n的博客 481

多线程之join()详解

为什么要使用join. 使用join能够保证线程的顺序问题,比如现在有 A和 B两个线程,如果B线程调用A.join方法,则必学先让A线程执行完毕,才能执行B线程,底层通过通过wait和notify实现,核心思想,保证执行顺序。 我们来写个案列演示下: ...

sdgames的博客 3812

最简解决 Unity Error Registry configuration is invalid Unable to connect https packages.unity.cn

前言 在学习其他大佬项目的时候,大佬说项目能直接运行,然后我拉下来就报如下错误 Unity报错:[Package Manager]Error Registry configuration is invalid:Unable to connect “https://packages.unity.cn” 翻了很多博发现是 unity3d 中国增强版的原因,中国增强版屏蔽了国外自定义的插件仓库。 安装 非中国增强版后可以成功打开。 然后大家给出的解决方案都比较激进,大抵就是更换Unity版本就OK了。 当然我是觉

Gipsyz的博客 6842

join方法的使用

一:join()方法的使用 1.1:引出join方法的使用场景 主线程创建并启动子线程,如果子线程需要进行大量耗时的操作,那么主线程会早于子线程结束之前结束 public class Demo { public static void main(String[] args) { new Thread(() -> { try { System.out.println(Thread.currentThread().getNam

qq_38777614的博客 784

QT插件学习系列(一) 初识QtPlugin

QT插件学习系列(一) 初识QtPlugin 1、 概述 为什么我们要学习插件化,其和 windows 导出 dll 有什么区别呢? 导出的动态库如果缺失,程序不能运行。但插件可以。 同一套代码,即可分别在 windows 下和 linux 下生成插件。 QT 本身提供两种插件支持,一种称为高级 API,一种称为低级 API。 高级API的作用是扩展 QT 程序本身,需要子类化 QT 提供的插件基类,例如现有的 QTSqlDriver,因此你可也以编写自己的 QTStyle 扩展 QT。 低级

L_Andy的专栏 3113

海康威视 2DC 系列球机手机直连实用教程

海康威视2DC系列球机手机直连教程:首先确认设备支持直连功能并下载官方"海康互联"App;通过网线连接球机与路由器,使用SADP软件调整IP至同一网段;在App中添加设备并激活,完成调试即可远程查看监控画面。常见问题包括部分型号需远程解锁、网络连接异常等,可通过检查网络环境、联系客服等方式解决。本教程提供从准备到连接的完整指引,助您轻松实现手机监控管理。

海康威视技术支持 5406

关于join函数,你真的懂吗?

帮助对join函数有疑问的同学,答疑解惑

weixin_64995783的博客 2092

端侧部署与优化:让 AI 真正走进现实生活的关键技术

AI 的开发流程分为 “训练” 与 “推理” 两大阶段。在训练阶段,科研人员依托云端海量数据和高性能 GPU 算力,构建出精度优异的 AI 模型 —— 比如能识别 1000 种物体的图像分类模型、能理解人类语言的自然语言处理模型。但这些在云端 “战绩斐然” 的模型,若直接应用到现实场景中,却会面临三大 “落地困境”。从云端到端侧,从模型压缩到硬件适配,端侧部署与优化技术解决了 AI 落地的核心难题,让 AI 不再是实验室里的 “高精尖技术”,而是融入日常生活的 “实用工具”。

m0_63477749的博客 1052

JAVA多线程中join()方法解析

首先给出结论:t.join()方法只会使主线程(或者说调用t.join()的线程)进入等待池并等待t线程执行完毕后才会被唤醒。并不影响同一时刻处在运行状态的其他线程。 之前对于join()方法只是了解它能够使得t.join()中的t优先执行,当t执行完后才会执行其他线程。能够使得线程之间的并行执行变成串行执行。 public class TestJoin { public static void main(String[] args) throws InterruptedException {

Android 492

精确时钟同步协议ptp/IEEE-1588v2协议-------(1)简介

ptp, 1588V2, IEEE-1588, 精确时钟同步协议

meihualing的专栏 5357

uniapp - 使用web-view加载本地网页vue页面,用webview导入本地网页,uniAPP中使用web-view加载的本地及远程vue页面+双向通讯功能(兼容微信小程序、安卓苹果APP)

uniapp的App端web-view加载本地html,uniapp微信小程序webview加载本地HTML文件,在uniAPP中使用web-view加载的本地及远程vue页面且进行双向通讯,uni-app的web-view组件,支持加载远程网页,在app环境下,还支持加载本地HTML页面。uniapp WebView组件实现本地网页加载与通讯传值,uniAPP如何内嵌webView引入本地的vue网页示例代码,uniapp在web-view加载的本地及远程HTML中调用uni的API及网页和vue页面跳转

🏆 前端领域优质创作者 5226

Java 多线程join()方法的作用和实现原理解析

join():等待该线程结束,才能执行其他线程。 通常用于在main()主线程内,等待其它线程完成再执行main()主线程。Join方法实现原理是通过wait方法, 当main线程调用Thread.join()时,main线程会获得线程对象的锁,调用该对象的wait(),直到该对象唤醒main线程 。这就意味着main 线程调用Thread.join时,必须能够拿到线程对象的锁。

csdn_aiyang的博客 5379

分享一份小度在家1C系列NV2101刷机保姆级教程,轻松解锁第三方应用!(内含详细教程、刷机工具和救砖等工具)

分享一份小度在家1C系列NV2101刷机保姆级教程,轻松解锁第三方应用!(内含详细教程、刷机工具和救砖等工具)

XiaoqiangClub的博客 7169

join()方法的作用

让调用该方法的线程在执行完run()方法后,再执行join()方法后面的代码。 即,将两个线程合并,实现同步的功能。 具体,可以通过线程A的join()方法来等待线程A的结束,或者使用线程A的join(2000)方法 来等待线程A的结束,但最多等待2s,示例如下: public class JoinTest() { public static void main(String[] args)...

Dannie的博客 3243

IMSL CNL 7.0.0 (x86-64)Crack

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java多线程join()方法的作用和实现原理

join() 方法的作用 这个方法的作用是先将当前线程挂起,待其他线程结束后在执行当前线程的代码; 应用场景 比如有三个人小红、小李、小王, 三个人相约一起去酒店吃饭,菜已经点好了,三个人从不同的地方出发,只有三个人都到了酒店之后才会开始上菜;那么这三个人就分别代表三个线程,这三个线程执行完之后才会执行 “上菜” 的代码逻辑, 代码示例 package com.Lock; public class ConutDownLatchDemo_1 implements Runnable ...

叶新东老师的博客 3509

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python中join()方法的作用是_python中join()方法介绍

python中join()方法介绍发布时间:2020-09-01 03:58:17来源:脚本之家阅读:86作者:Ladylittleleaf描述Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。语法join()方法语法: str . join ( sequence )参数sequence -- 要连接的元素序列。返回值返回通过指定字符连接序列中元素后生成的新字符...

weixin_35617554的博客 4902

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Thread的join()方法的作用

线程类的 join()方法将等待子线程完成,然后继续当前线程。join()看起来像子线程加入主线程。

qq_31747473的博客 3558

Java多线程【线程实例的方法 join()】的作用

线程实例方法join()的作用

修行时 571

Java---join()方法的作用

书中的解释是:join()方法就是指调用该方法的线程在执行完run()方法后,再执行join方法后面的代码,即将两个线程合并,用于实现同步控制。 具体作用: 等待该线程终止,例如,在子线程调用了join(time)方法后,主线程只有等待子线程time时间后才能执行子线程后面的代码。 具体代码: public class joinTest { class ThreadImp impleme

guo_520_jing的博客 4664

python join函数的作用_Python join()函数原理及使用方法

函数:string.join()Python中有join()和os.path.join()两个函数,具体作用如下:join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串os.path.join(): 将多个路径组合后返回一、函数说明1、join()函数语法: "sep".join(seq)参数说明sep:分隔符。可以为空seq:要连接的元素序列、字...

weixin_39553753的博客 2792

【14】Java中的Thread.join()方法有什么作用?

Thread.join()是Java多线程编程中的关键方法,用于确保线程执行顺序和数据完整性。其核心作用包括: 等待线程终止:主线程通过join()等待子线程完成,避免数据未计算完就汇总(如报表场景)。 两种用法:无参join()“死等”确保必须完成;带超时join()防止子线程卡死。 典型场景:多线程结果汇总、线程顺序控制、守护线程防提前终止。 与CountDownLatch不同,join()适合少量线程的“一对一”等待,而后者适合多线程“群等”。

编程技术圈 1179

Java中的Thread.join()方法有什么作用?

方法是Java多线程编程中非常重要的一个方法,它可以帮助我们实现线程间的同步和协作。通过合理地使用join()方法,我们可以确保在某个线程完成其任务后,其他线程再继续执行,从而保证程序的正确性和稳定性。在实际开发中,我们需要根据具体的需求和场景来灵活运用join()方法,以达到最佳的并发效果。

Java开发者,专注后端技术分享,深耕框架实战与架构优化,持续输出优质技术干货。 1002

(五十六)join()方法的作用是什么

在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束。这时,如果主线程想等待子线程执行完之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了。join()方法的作用是等待线程对象的销毁。 ...

FixedStar 的博客 1006

java线程一定是thread,java 线程thread join()方法作用

1.join方法定义在Thread类中,则调用者必须是一个线程,例如:Thread t = newCustomThread();//这里一般是自定义的线程类t.start();//线程起动t.join();//此处会抛出InterruptedException异常2.上面的两行代码也是在一个线程里面执行的。以上出现了两个线程,一个是我们自定义的线程类,我们实现了run方法,做一些我们需要的工作;...

weixin_35870469的博客 165
上一篇: 多线程的运行状态
下一篇: 线程优先级
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值