线程中的join方法

      在Java多线程编程中,join() 方法用于协调线程的执行顺序,其核心作用是:让当前线程(调用方)等待另一个线程(被调用方)执行完毕,再继续执行后续代码。

核心作用

  1. 等待线程结束
    • 若线程A调用线程B的 join() 方法,线程A会进入阻塞状态,直到线程B执行完毕(即线程B的 run() 方法结束)。
    • 若线程B已经结束,join() 会立即返回,线程A继续执行。
  2. 协调执行顺序
    • 常用于主线程等待子线程完成任务,确保子线程的结果可用后再继续执行。

使用场景示例 

public class JoinExample {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(() -> {
            System.out.println("子线程开始执行");
            try {
                Thread.sleep(2000); // 模拟耗时操作
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("子线程执行完毕");
        });

        thread.start();
        System.out.println("主线程等待子线程...");
        thread.join(); // 主线程在此等待,直到子线程结束
        System.out.println("主线程继续执行");
    }
}

输出如下: 

主线程等待子线程...
子线程开始执行
子线程执行完毕
主线程继续执行

在这个例子中,main方法所代表的主线程一开始就在运行,紧接着遇到另一线程(thread)同步进行,因为模拟了thread线程中有一部分运行耗时,所以程序会先运行到main线程的第一个sout语句,并调用thread线程的join方法,让当前线程(main)等待另一个线程(thread)执行完毕,再继续执行后续代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值