六种状态
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