Java线程的几种状态(图文详解)

Java线程的几种状态(图文详解)-mikechen

Java线程的几种状态经常在Java面试被问到,下面我一一来详解Java线程的几种状态@mikechen

Java中的线程有以下几种状态:

1.新建(New)

线程刚被创建但还没有开始执行,如下红色状态所示:

Java线程的几种状态(图文详解)-mikechen

2.运行(Runnable)

Runable状态对应两种状态,分别:Ready(就绪)、Running(运行中)两种状态,如下红色状态所示:

Java线程的几种状态(图文详解)-mikechen

 

3.阻塞(Blocked)

线程被阻塞并且暂停执行,通常是因为等待一些资源,比如:锁等,一旦资源可用,线程就可以进入到就绪状态。

如下红色图所示:

Java线程的几种状态(图文详解)-mikechen

 

4.等待(Waiting)

线程被阻塞并且等待另一个线程执行某个特定操作,比如:调用了wait()方法,一旦另一个线程执行了特定操作,它会通知等待的线程并且它就可以进入到就绪状态。

如下图所示:

Java线程的几种状态(图文详解)-mikechen

 

 

5.计时等待(Timed Waiting)

线程被阻塞并且等待另一个线程执行某个特定操作,比如:如调用了wait(long timeout)方法,但是等待时间有限制。

如下图所示:

Java线程的几种状态(图文详解)-mikechen

一旦等待时间到达,它就可以进入到就绪状态。

 

6.终止(Terminated)

线程已经执行完毕并且结束。

Java线程的几种状态主要就分为上面的6种,更多Java多线程,请查看:Java多线程编程详解(看这篇就足够了)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法