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

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

相关推荐
VidDown2 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
蛋蛋的就会顺顺的2 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要8263 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡3 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
死磕音视频3 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林4 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne5 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_5 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
pride.li5 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook5 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python