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&notify&join

Java并发编程之线程安全线程通信

java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)

java并发编程的艺术,读线程之间的通信的思考

Java内存模型的基础