1、新增(New)
线程创建后,尚未启动的线程。就是没有执行start()的线程。
2、运行(Runnable)
包括Running和Ready两个子状态。
在执行了start()之后,线程进入线程池,等待OS调用获得CPU的使用权。这段时间就是Ready状态。当获得了CPU的使用权之后就是Running状态。
3、无限期等待(Waiting)
不会被分配CPU的使用权,需要显示唤醒。
4、限期等待(Timed Waiting)
在一定时间后会由系统自动唤醒。
5、阻塞(Blocked)等待获取排他锁
说白了就是进入synchronized关键字修饰的方法或代码块(获取锁)时的状态。
6、结束(Terminated)
已终止线程的状态,线程已经结束执行。
当一个线程的run方法走完,或者主线程的main方走完,就是终止了。单也许这个线程对象是活的。在一个终止的线程上调用start方法,会抛出java.lang.IllegalThreadStateException异常。
![](https://img.haomeiwen.com/i13963670/9abc4a50be132d6e.png)
网友评论