当前位置: 首页 > java>阅读正文

java线程的6种状态

2021.9.24 朱丰华 1436 次 留下评论 692字

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线程死亡后,还能重新调用吗?

答:否,线程一旦死亡,就无法再调用了,要么重新创建、要么使用线程池技术达到想要的效果。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注