跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java 线程状态详解及生命周期转换

Java 线程生命周期涵盖新建、可运行、阻塞、等待、限期等待及终止六种状态。掌握各状态的定义及转换条件,如 start()、wait()、join() 等方法的影响,是解决并发问题、优化程序性能的关键基础。

DataScient发布于 2018/4/27更新于 2026/10/2594 浏览
Java 线程状态详解及生命周期转换

并发编程中,多线程管理是核心技能。理解线程的生命周期及其状态流转,对于排查死锁、优化性能至关重要。

JVM 规范中定义了六种线程状态(对应 java.lang.Thread.State 枚举)。任意时刻,一个线程只能处于其中一种状态。这六种状态分别是:

1. 新建(NEW)

线程对象已创建,但尚未调用 start() 方法。此时线程还未真正启动。

// 示例:线程处于 NEW 状态
Thread t = new Thread();

2. 可运行(RUNNABLE)

包含了操作系统层面的'就绪'和'运行'状态。线程正在等待 CPU 时间片,或者正在 CPU 上执行指令。一旦调用 start(),线程即进入此状态。

3. 阻塞(BLOCKED)

线程被阻塞,等待获取监视器锁(synchronized 关键字)。只有当其他线程释放了该对象的锁,它才能继续执行。

4. 无限期等待(WAITING)

线程不会自动唤醒,必须等待其他线程显式通知。常见触发方式包括:

  • 调用 Object.wait() 且无超时参数
  • 调用 Thread.join() 且无超时参数
  • 调用 LockSupport.park()

5. 限期等待(TIMED_WAITING)

线程会等待指定时间后自动唤醒,无需其他线程干预。常见触发方式包括:

  • 调用 Thread.sleep(millis)
  • 调用 Object.wait(timeout)
  • 调用 Thread.join(timeout)

6. 终止(TERMINATED)

线程执行完毕,或遇到未捕获异常而终止。此后该线程对象不可再次启动。

理解这些状态的转换逻辑,能帮助我们更好地控制并发行为,避免资源竞争和死锁问题。实际开发中,通过日志打印状态或调试工具观察状态流转,往往比盲目猜测更有效。

目录

  1. 1. 新建(NEW)
  2. 2. 可运行(RUNNABLE)
  3. 3. 阻塞(BLOCKED)
  4. 4. 无限期等待(WAITING)
  5. 5. 限期等待(TIMED_WAITING)
  6. 6. 终止(TERMINATED)

更多推荐文章

查看全部
  • AI 创作实战指南:从提示词工程到商业变现逻辑
  • 练习开发Skill——网页内容抓取Skill(website-content-fetch)
  • PID 算法基础:比例积分微分控制原理
  • Windows 下搭建 Git 本地服务器及开发流程
  • BFS 解决 FloodFill 算法:从图像渲染到岛屿问题实战
  • Gemini 3 编程能力深度评测:从代码补全到架构级理解
  • 自定义 Shell 实现原理与代码解析
  • 图论算法精讲:核心概念、存储与例题
  • 基于 EasyDSS 的无人机 RTMP 高清推流与转码技术应用
  • Python 音频隐写术实现:基于 LSB 算法的敏感信息加密传输方案
  • 双指针算法实战:三数之和与四数之和详解
  • Neo4j 数据库连接失败排查与解决方案
  • RoboChallenge 发布具身智能年度报告:4 万次真机评测揭示模型真实能力
  • OpenClaw 多机器人多 Agent 模式:构建 AI 助手团队
  • Spring IoC 容器与依赖注入核心机制详解
  • OpenClaw+Qwen3.5:构建本地化 AI 数字员工助手
  • 大模型幻觉问题治理:技术体系、工程实践与未来演进
  • MySQL 数据类型详解
  • Kiro 安装与使用指南:AWS 新一代 AI IDE 两种部署方式
  • Flutter eip55 库鸿蒙适配指南:以太坊地址校验与验证

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online