六种状态
Java 语言中线程共有六种状态,分别是:
- NEW(初始化状态)
- RUNNABLE(可运行 / 运行状态)
- BLOCKED(阻塞状态)
- WAITING(无时限等待)
- TIMED_WAITING(有时限等待)
- TERMINATED(终止状态)
状态转换
1.new新建状态
new 一个线程,调用start()方法前
2.runable 就绪状态:
已经调用start方法,但是还在等待cpu分配时间片。实际操作中,如果想立即执行,可以sleep一下主线程,这样就空出来时间片给start方法
3.运行状态:
正在运行,可以演变成,阻塞状态、就绪状态、终止状态。
进入阻塞状态:
- 1.调用sleep方法
2.调用阻塞式io方法
3.试图获得同步监视器,但是却被其他线程占有
4.线程在等待通知notify
5.程序调用了suspend方法,调用resume放开阻塞
进入就绪状态:
- 1.获得cpu调度会从就绪变成运行,失去cpu资源即为进入就绪。嗲用yield方法就会,失去cpu资源。其目的在于,重新分配cpu资源,让相同优先级的线程,重新开始竞争。
进入终止状态:
- 1.run方法运行完了
2.出现异常
3.调用stop,destroy

本文深入解析Java线程的六种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,以及这些状态之间的转换过程。通过具体场景解释了线程如何从新建到运行,直至终止,包括阻塞、等待和就绪状态的触发条件。
2304

被折叠的 条评论
为什么被折叠?



