线程的各个状态之间如何转换

、
一、就绪状态
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方法后,被回收
本文详细解析了线程从就绪、运行、阻塞到死亡状态的转换过程,包括调用start、sleep、wait等方法引起的状态变化,以及CPU调度在线程状态转换中的作用。
2439

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



