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

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

相关推荐
2601_962297256 分钟前
Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例
python·selenium·jenkins·pytest·allure
tedcloud1237 分钟前
OpenLogi 怎么搭建?用 Rust 打造一个轻量的 Logitech 外设管理工具
linux·运维·服务器·开发语言·后端·rust·开源
霸道流氓气质20 分钟前
Spring AI 技术细节:VectorStore 多库统一抽象
java·人工智能·spring
今天AI了吗21 分钟前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
Tanjia_kiki26 分钟前
谷歌浏览器中F12编辑并重发请求
开发语言·前端·javascript
阿童木写作27 分钟前
跨境电商批量图片翻译与视频字幕翻译工具推荐
python·音视频
程序猿编码28 分钟前
基于GGML的C++17轻量化语音推理引擎:说话人识别与语音分析技术全解析
开发语言·c++·pytorch·深度学习·神经网络·大模型
leihefeng34 分钟前
手写数字识别:KNN vs 逻辑回归实战
python·算法·机器学习·逻辑回归·scikit-learn
学长毕业设计41 分钟前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
珍珠先生42 分钟前
P10 · 缺 MySQL 驱动 jar:ClassNotFoundException: com.mysql.cj.jdbc.Driver
java