一.线程状态:(6种)
1.New:新建状态,注意此时并没有创建线程,未调用start方法。
2.Runnable:可运行状态,包含就绪状态(Ready)和运行状态(Runnable)。
3.Blocked:阻塞状态,线程请求系统资源失败就会进入阻塞状态,所有阻塞的线程都会在一个阻塞队列中(许多个PCB串成一个阻塞队列),阻塞的线程会不断申请系统资源,一旦成功就会进入就绪状态,即从线程从阻塞队列出来,进入就绪队列,等待执行。
4.Waiting:等待状态,即该状态下的线程会放弃CPU执行权,例如wait,join等方法就会使得线程进入等待状态,同样的有一个等待队列存储所有的等待状态的线程,线程等待其他线程唤醒才能继续执行。
5.Time_Waiting:计时等待状态,该状态下的线程也会放弃CPU执行权,但是和Waiting状态的区别是,如果一旦超时,也就是等待时间到了,线程会继续执行,结束等待状态。
6.Terminated:结束状态,也就是线程结束后的状态,执行完run方法后,线程就会结束。
二.线程状态之间切换的图解: