Java线程的几种状态经常在Java面试被问到,下面我一一来详解Java线程的几种状态@mikechen
Java中的线程有以下几种状态:
1.新建(New)
线程刚被创建但还没有开始执行,如下红色状态所示:
2.运行(Runnable)
Runable状态对应两种状态,分别:Ready(就绪)、Running(运行中)两种状态,如下红色状态所示:
3.阻塞(Blocked)
线程被阻塞并且暂停执行,通常是因为等待一些资源,比如:锁等,一旦资源可用,线程就可以进入到就绪状态。
如下红色图所示:
4.等待(Waiting)
线程被阻塞并且等待另一个线程执行某个特定操作,比如:调用了wait()方法,一旦另一个线程执行了特定操作,它会通知等待的线程并且它就可以进入到就绪状态。
如下图所示:
5.计时等待(Timed Waiting)
线程被阻塞并且等待另一个线程执行某个特定操作,比如:如调用了wait(long timeout)方法,但是等待时间有限制。
如下图所示:
一旦等待时间到达,它就可以进入到就绪状态。
6.终止(Terminated)
线程已经执行完毕并且结束。
Java线程的几种状态主要就分为上面的6种,更多Java多线程,请查看:Java多线程编程详解(看这篇就足够了)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》