
java学习-线程的6种状态,究其原码
发布日期:2021-05-07 10:13:25
浏览次数:20
分类:精选文章
本文共 1083 字,大约阅读时间需要 3 分钟。
Java线程状态详解
线程在执行过程中会经历多种状态,这些状态决定了线程当前的运行情况。了解线程状态对于优化程序性能和调试多线程程序至关重要。在JDK5之后,Ready和Running状态合并为Runnable状态,因此现代Java线程共有6种状态。
线程状态分类
New(初始状态)
线程在被创建后,尚未启动时处于此状态。新线程一旦调用start方法,就会从此状态转移到Runnable状态。Runnable(就绪状态)
线程在调用start方法后,随时准备抢占CPU时间片。此时线程处于Runnable状态,意味着它可能正在执行或等待执行。Running(运行状态)
线程正在占用CPU资源,执行程序代码中的指令。当线程获得CPU时间片时,就进入了Running状态。Timed_Waiting(限期等待状态)
线程在调用sleep方法后进入休眠状态,会在设定的时间后自动苏醒。此时线程处于限期等待状态。Waiting(无限期等待状态)
线程在调用join方法后进入无限期等待状态,等待另一个线程完成后才能继续执行。Blocked(阻塞状态)
线程在尝试获取锁定对象时进入阻塞状态,等待锁定对象释放后才能继续执行。Terminated(终止状态)
线程在执行完所有任务后,自动进入终止状态,通常由main线程触发。Thread.State原码
Java的Thread类通过State枚举类型表示线程的状态。以下是State枚举类型的定义:
public enum State { NEW, // 初始状态 RUNNABLE, // 就绪状态 BLOCKED, // 阻塞状态 WAITING, // 无限期等待状态 TIMED_WAITING,// 限期等待状态 TERMINATED; // 终止状态}
Thread类的getState()方法返回当前线程的状态:
public State getState() { return sun.misc.VM.toThreadState(threadStatus);}
通过 getState() 方法,可以获取线程当前的运行状态。在Eclipse中,通过右键选择线程并使用合适的工具查看线程状态详情。
总结
线程状态的理解和管理是多线程编程中的核心知识。掌握各状态之间的转换规律,可以更好地优化线程性能,避免死锁和资源竞争。通过以上内容,可以全面了解Java线程的状态机制,为多线程开发打下坚实基础。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月07日 10时51分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
springboot通过控制层跳转页面404
2019-03-05
idea2020 没有 tomcat server
2019-03-05
jq动态修改元素的onclick属性的值
2019-03-05
为什么讨厌所谓仿生AI的说法
2019-03-05
ORACLE 客户端工具
2019-03-05
Elasticsearch下载慢?分享百度云下载-ELK
2019-03-05
云服务器springboot jar项目开启jmx remote监控-解决无法连接的问题
2019-03-05
文件上传-FileUpload
2019-03-05
快速排序
2019-03-05
Pyinstaller打包的exe文件过大的解决方法
2019-03-05
Linux的软链接跟Windows快捷方式一样?
2019-03-05
更改github的默认语言类型
2019-03-05
使用bigdecima实例化时传int和string时的精度丢失
2019-03-05
使用第三方sdk,微信wechat扫码登录
2019-03-05
mysql中的行转列
2019-03-05
java8中的闭包Function/BiFunction
2019-03-05
flink —— checkpoint机制
2019-03-05
shell脚本中冒泡排序、直接排序、反转排序
2019-03-05