Java并发多线程编程——线程之间的通信之join()
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java并发多线程编程——线程之间的通信之join()相关的知识,希望对你有一定的参考价值。
一、Thread类中join()方法的理解
- join()属于Thread类中的方法;
- join()的作用是让“主线程”等待“子线程”结束之后才能继续运行。
- 把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。 例如在线程A中调用了线程B的Join()方法,直到线程B执行完毕后,才会继续执行线程A。
二、Thread类中join()方法示例
示例场景,定义2个线程分别的线程A和线程B,在线程A中调用了线程B的Join()方法,直到线程B执行完毕后,才会继续执行线程A。
1、代码
package com.xz.thread.t17;
/**
* @description: Thread类中join()方法示例
* @author: xz
* @create: 2021-05-26 22:11
*/
public class Demo {
/**
* a方法
* @param Bthread 传入一个B线程
*/
public void a(Thread Bthread){
System.out.println("A方法开始执行。。。。");
Bthread.start();//启动B线程
try {
Bthread.join();//调用B线程的join()方法
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("A方法执行完毕。。。。");
}
/**
* b方法
*/
public void b(){
System.out.println("B方法开始执行。。。。");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("B方法执行完毕。。。。");
}
public static void main(String[] args) {
Demo d =new Demo();
//创建B线程
Thread BThread=new Thread(new Runnable() {
@Override
public void run() {
d.b();
}
});
//创建A线程,在A线程中传入B线程
new Thread(new Runnable() {
@Override
public void run() {
d.a(BThread);
}
}).start();
}
}
2、运行main函数,输出结果如下
3、结论
- 在线程A中调用了线程B的Join()方法,直到线程B执行完毕后,才会继续执行线程A。
以上是关于Java并发多线程编程——线程之间的通信之join()的主要内容,如果未能解决你的问题,请参考以下文章
Java多线程系列:线程的五大状态,以及线程之间的通信与协作
Java并发编程原理与实战二十一:线程通信wait¬ify&join