线程的生命周期之线程“插队“

如大家所了解的,线程生命周期就是线程从出生到结束的全过程。Java 里主要分‌6 种状态‌,包括新建、可运行、阻塞、等待、计时等待和终止 。‌‌‌

线程"插队"

Thread 提供了让一个线程等待另一个线程完成的方法------ join () 方法。当在某个程序执行流中调用其他线程的 join () 方法时,调用线程将被阻塞,直到被 join () 方法加入的 join 线程执行完为止。

以下是一个使用 join 方法的 Java 多线程代码示例:

复制代码
public class JoinThreadExample {

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            System.out.println("Thread 1 started");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Thread 1 finished");
        });

        Thread t2 = new Thread(() -> {
            System.out.println("Thread 2 started");
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Thread 2 finished");
        });

        t1.start();
        t2.start();

        // 使用 join 方法,让主线程等待 t1 和 t2 线程执行完毕后再继续执行
        t1.join();
        t2.join();

        System.out.println("All threads finished");
    }
}

在这个例子中,我们创建了两个线程 t1 和 t2 ,它们分别会休眠 5 秒和 3 秒,然后打印出一条信息。我们使用 join 方法将主线程阻塞,直到 t1 和 t2 线程执行完毕后再继续执行主线程。最后,我们打印出一条 "All threads finished" 消息,表示所有线程都已经执行完毕。

相关推荐
ANnianStriver1 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
杨了个杨89822 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
kaikaile19952 小时前
数字全息图处理系统(C# 实现)
开发语言·c#
xsc6996752 小时前
从零搭建大模型与智能体平台 - 完整技术详解
python
秋93 小时前
Go语言(Golang)开发工程师全景解析:岗位职责·语言优势与使用场景·各城市薪资·发展前景·高考志愿填报(2026版)
开发语言·golang·高考
无风听海3 小时前
多租户系统中的 OIDC:Discovery 端点与联合登录的深度实践
后端·python·flask
CTA终结者4 小时前
期货量化主力换月程序怎么移仓:天勤 underlying_symbol 与任务切换
python·区块链
huangdong_4 小时前
1688商品图片采集技术解析:登录态处理与SKU图自动分类
开发语言
马士兵教育4 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习