讲师中心 微信公众号
AI工具推荐 视频效率加速

在Java里线程的生命周期包括哪些状态_Java线程状态管理解析

雨丽同学_2892

雨丽同学_2892

发布时间:2026-02-04 10:08:33

|

857人浏览过

|

来源于php中文网

原创

Java线程生命周期仅有6种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,定义在Thread.State枚举中;它们非线性流转,由JVM依实际行为动态切换,且getState()不可用于线程控制逻辑。

在java里线程的生命周期包括哪些状态_java线程状态管理解析

Java线程的生命周期只有6种状态,全部定义在 Thread.State 枚举中,不是5种也不是7种,别被过时资料误导。

NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED 这六种状态怎么区分

它们不是按时间顺序线性流转的,而是由 JVM 根据线程实际行为动态切换:

  • NEW:线程对象已创建但 start() 没调用,此时调 isAlive() 返回 false
  • RUNNABLE:包含“正在 CPU 执行”和“就绪等待调度”两种情况,不等于正在运行;I/O 阻塞、synchronized 竞争失败都不会进这个状态
  • BLOCKED:只发生在进入 synchronized 同步块/方法时,因锁被其他线程持有而挂起
  • WAITING:调用 Object.wait()、Thread.join()、LockSupport.park() 且没设超时
  • TIMED_WAITING:调用带超时的 Thread.sleep(1000)、Object.wait(500)、LockSupport.parkNanos() 等
  • TERMINATED:线程 run() 方法正常结束或抛出未捕获异常后到达,不可逆

为什么 jstack 输出里看不到 RUNNABLE 却看到 “java.lang.Thread.State: RUNNABLE”

这是最常被误解的一点:RUNNABLE 是 JVM 线程状态,而操作系统层面的“running”或“runnable”是另一套概念。jstack 显示的 RUNNABLE 表示该线程在 JVM 看来“可运行”,但它可能正被 OS 调度器挂起、在执行 native 代码(如 IO)、甚至卡在用户态自旋锁里。

cn-json-diff
cn-json-diff

比较两个 JSON 文件并显示差异。支持嵌套结构、数组及值变更。纯 Python 标准库实现,无需 API 密钥。

下载
  • 真实 CPU 占用高?查 top -H 或 pidstat -t 看 OS 级线程状态
  • jstack 中长期显示 RUNNABLE 但无实际进展?大概率是 native 阻塞(如 socket read、JNI 调用)或死循环,JVM 无法感知
  • BLOCKED 和 WAITING 在 jstack 中会明确标出锁 ID 或等待对象,比 RUNNABLE 更容易定位问题

Thread.getState() 返回的状态不能用来做线程控制逻辑

因为状态检查和后续操作之间存在竞态:你刚读到 RUNNABLE,下一行它就进了 WAITING;或者读到 TERMINATED,其实只是刚好完成清理但堆内存还没回收完。

立即学习“Java免费学习笔记(深入)”;

  • 不要写 if (t.getState() == Thread.State.TERMINATED) { t.start(); } —— 报 IllegalThreadStateException
  • 不要靠轮询 getState() 判断线程是否结束,用 t.join() 或 Future.isDone()
  • Thread.stop()、Thread.suspend() 已废弃,它们依赖状态强制干预,极易导致锁残留和数据不一致

真正关键的是理解状态背后的资源语义:BLOCKED 关联 monitor 锁,WAITING/TIMED_WAITING 关联条件队列或 park 机制,而 RUNNABLE 是唯一不持有任何显式阻塞条件的状态——但它也最不透明。

热门AI工具

更多
创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6587

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2728

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

4638

2023.08.10

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

583

2025.12.01

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

0

2026.11.03

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

20

2026.11.03

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn