线程的生命周期
线程的状态
线程的状态:也就是线程从生到死的过程,以及中间经历的各种状态及状态转换。
理解线程的状态有利于提升并发编程的理解能力。
Java线程的状态
Java总共定义了6种状态
6种状态都定义在Thread类的内部枚举类中。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Thread{ ... public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } ... } |
线程的6种状态总结
NEW(新建)
线程刚被创建,但是并未启动。
Runnable(可运行)
线程已经调用了start()等待CPU调度
Blocked(锁阻塞)
线程在执行的时候未竞争到锁对象,则该线程进入Blocked状态;。
Waiting(无限等待)
一个线程进入Waiting状态,另一个线程调用notify或者notifyAll方法才能够唤醒
Timed Waiting(计时等待)
同waiting状态,有几个方法有超时参数,调用他们将进入Timed Waiting状态。带有超时参数的常用方法有Thread.sleep 、Object.wait。
Teminated(被终止)
因为run方法正常退出而死亡,或者因为没有捕获的异常终止了run方法而死亡。
新建状态( NEW ) 创建线程对象
就绪状态( RUNNABLE ) start方法
阻塞状态( BLOCKED ) 无法获得锁对象
等待状态( WAITING ) wait方法
计时等待( TIMED_WAITING ) sleep方法
结束状态( TERMINATED ) 全部代码运行完毕
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY