线程状态有哪几种?6种状态详解

线程状态有哪几种?6种状态详解-mikechen

线程状态有哪些,以及线程状态的作用,经常Java面试被问,下面我就来详解线程状态@mikechen

以下是线程生命周期状态图,展示了线程在不同状态间的转换,线程状态通常包括6种,如下图所示:

线程状态有哪几种?6种状态详解-mikechen

主要分为:新建(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面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法