线程状态有哪些,以及线程状态的作用,经常Java面试被问,下面我就来详解线程状态@mikechen
以下是线程生命周期状态图,展示了线程在不同状态间的转换,线程状态通常包括6种,如下图所示:
主要分为:新建(New)、可运行(Runnable)、阻塞(Blocked)、等待(Waiting)、计时等待(Timed Waiting)、终止(Terminated)状态。
线程的状态主要包含6种,下面就分别来详解。
1.新建状态(New)
当一个线程对象被创建时,它处于新建状态。
2.运行状态(Running)
当线程被创建后,调用 start() 方法之前,它处于就绪状态。就绪状态的线程已经准备好运行,只等待 CPU 调度。
3.阻塞状态(Blocked)
线程由于某种原因,比如:等待输入输出、等待锁、等待信号量等,暂停执行时处于阻塞状态。
4.就绪状态(Ready)
线程准备好执行,但尚未获得 CPU 时间时处于就绪状态。
5.等待状态(Waiting)
当线程等待其他线程或系统资源时,它进入等待状态,在此状态下,该线程不会消耗 CPU 时间。
6.结束状态(Terminated)
当线程等待其他线程或系统资源时,它进入等待状态,在此状态下,该线程不会消耗 CPU 时间。
以上就是线程状态的6种状态详解,更多Java多线程,请查看:Java多线程编程详解(看这篇就足够了)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》