线程的生命周期之线程睡眠

线程的生命周期:

当线程被创建并启动之后,它并不是直接就进入了执行状态,在线程的生命周期中有新建、就绪、运行、阻塞和死亡 5 种状态。 CPU 需要在多条线程之间切换,线程状态也会多次在运行、就绪状态之间切换,从而让多线程程序正常执行。线程生命周期示意图如图所示:

线程睡眠

如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用 Thread 静态 sleep () 方法来实现。

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

复制代码
public class SleepThreadDemo {

    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            for (int i = 1; i <= 5; i++) {
                System.out.println("Thread 1 - " + i);
                try {
                    Thread.sleep(1000); // 线程休眠1秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        Thread t2 = new Thread(() -> {
            for (int i = 1; i <= 5; i++) {
                System.out.println("Thread 2 - " + i);
                try {
                    Thread.sleep(2000); // 线程休眠2秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

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

在这个示例中,我们创建了两个线程 t1 和 t2 。每个线程都打印出一些信息,然后使用 sleep 方法使线程休眠一段时间。t1 线程每次休眠 1 秒钟,而 t2 线程每次休眠 2 秒钟。当我们运行这个程序时,我们会看到两个线程交替执行,每秒钟 t1 线程输出一次,每两秒钟 t2 线程输出一次。

相关推荐
程序员黑豆3 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
风流 少年4 小时前
Spring AI 2.0:Memory
java·后端·spring
码匠许师傅4 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
2603_965148114 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
小席是个热心肠5 小时前
AI相关的自我学习
java·人工智能·学习
知无不研7 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
数智化管理手记7 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
cfm_29147 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
鲸采云SRM采购管理系统8 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
C++ 老炮儿的技术栈9 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐