线程的各个状态之间如何转换
、
一、就绪状态
1.调用start方法,线程进入就绪状态
2.阻塞状态解除,例如join方法或者sleep方法,nodify方法执行后,线程从阻塞状态进入到就绪状态
3.从运行状态转换到就绪状态:调用yield方法
4.jvm本身从本地线程切换到其他线程,则本地线程进入就绪状态
二、运行状态
强调:运行状态一定是从就绪状态通过调度进入到运行状态,具体如何进入到运行状态取决于cpu的调度
三、阻塞状态
强调:一定是从运行状态进入到阻塞状态
1.调用sleep方法从运行状态进入到阻塞状态
2.调用wait方法进入到阻塞状态
3.调用join方法进入到阻塞状态
4.IO流的read方法和write方法也会让线程进入到阻塞状态,等待操作系统对IO流的调度后继续执行(所以后续有了NIO的出现)
四、死亡状态
1.调用stop方法(不推荐使用)
2.调用destroy方法
3.线程执行完run方法后,被回收