Java中的线程状态
Java中线程的状态
New
:新创建对象,还没执行start()
方法RUNNABLE
:就绪态和运行状态。BLOCKED
:表示线程等到获取锁时候的状态。WAITING
:处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒。TIMED_WAITED
:与TIMED_WAITED
不同的是,这个到达一定时间会被自动唤醒。TERMINATED
:线程已经执行完毕
线程的生命周期
- 线程被实例化,线程的状态即为
NEW
- 线程调用
start()
方法,线程变成RUNNABLE
。其中RUNNABLE
分为运行态和就绪态。- 线程执行·yield()
方法,从
运行态->就绪态`。其实就是让出计算资源。 - 系统重新分配计算资源,线程从
就绪态->运行态
。
- 线程执行·yield()
- 等待其他线程某些操作。
- 由
Object.wait()
、Thread.join()
、进入WAITING
状态。 - 由
Object.notify
、Object.notifyAll()
重回RUNNABLE
状态。
- 由
- 线程进入进入指定时间的等待。
- 由
Thread.sleep(long)
、Object.wait(long)
、Thread.join(long)
进入TIMED_WAITED
- 由
Object.notify
、Object.notifyAll()
重回RUNNABLE
状态。
- 由
- 线程遇到同步锁
- 线程等待进入
sychronized
方法、块的时候进入BLOCKED
状态。 - 线程获得锁,回到
RUNNABLE
- 线程等待进入
- 线程执行完成,变成
TERMINATED
状态。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!