线程的几种可运行状态

1.新建(new):新创建了一个线程对象。
2.可运行(runnable):线程被创建后,其他 线程(比如main线程)调用了该对象的的start()方法,该状态的线程处于可运行的线程池中,等待被线程调度使用,获取cpu的使用权
3.运行(running):可运行线程获得了cpu时间片,执行程序代码
4.阻塞(block):阻塞状态是指线程因为某种方法放弃了cpu使用权,也让出了cpu时间片,暂时停止运行,直到线程进入可运行状态,重新获得cpu时间片转到运行状态,阻塞的情况分三种:
(一). 等待阻塞:运行的线程执行 wait ()方法, JVM 会把该线程放入等待队列中。
(二). 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。
(三). 其他阻塞: 运行的线程执行 Thread . sleep 或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。
5. 死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。

猜你喜欢

转载自blog.csdn.net/qq_43500067/article/details/89603970