java线程的状态,使用嵌套枚举类Thread.State表示,官方文档:thread.state
查阅文档我们得到6种状态为:
- NEW: 新建状态
- RUNNABLE:可运行状态
- BLOCKED:阻塞状态
- WAITING:无限等待状态
- TIMED_WAITING:睡眠
- TERMINATED:死亡
睡眠状态,一般指的是sleep,在一定的时间后,会继续运行
无限等待,需要被手动唤醒,唤醒后可能立刻运行、或进入阻塞状态
线程状态转换图如下:
问:java线程new状态指的是实例化线程吗?
答:否,new状态,可以表示2种,实例化线程、或调用了start但还没切换到runnable的中间状态,从新建到运行是需要一些时间和操作的。
问:java的runnable状态线程是在物理机上运行吗?
答:否,因为runnable仅表示相对JVM是运行的,实际上,它可能它处于就绪、运行、阻塞状态。
问:java什么时候状态为blocked?
答:java线程中的阻塞,表示的是被“锁”住,当一个资源被锁住而一个线程去争取则该线程被blocked,直到锁被释放才有机会去争取,一旦抢到则回归到runnable
问:什么是java的waiting状态?
答:一个runnable线程准备去执行,但是JVM发现还有一些必要资源没有准备完毕,于是把该线程挂起,直到必要资源已经准备完毕,再执行该线程。
问:java的睡眠状态指的是什么?
答:睡眠通常指:短暂的休息、有限的等待,虽然一切准备就绪,但主观上挂起一段时间
问:java线程死亡后,还能重新调用吗?
答:否,线程一旦死亡,就无法再调用了,要么重新创建、要么使用线程池技术达到想要的效果。
本篇完,还有疑问?留下评论吧