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

如大家所了解的,线程生命周期就是线程从出生到结束的全过程。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" 消息,表示所有线程都已经执行完毕。

相关推荐
程序员黑豆1 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
风流 少年2 小时前
Spring AI 2.0:Memory
java·后端·spring
码匠许师傅2 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
2603_965148113 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
小席是个热心肠3 小时前
AI相关的自我学习
java·人工智能·学习
jufeng13074 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 8 篇】
python·ai agent·配置系统
circuitsosk4 小时前
跨境电商智能化实战:AI如何赋能客服自动回复、广告智能投放与供应链预测
大数据·人工智能·python·langchain·智能客服
2601_956319885 小时前
2026年零基础学量化:从看懂示例到写清条件和动作
人工智能·python
知无不研5 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
数智化管理手记5 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能