今天爱分享给大家带来线程的状态有哪些【面试题详解】,希望能够帮助到大家。
状态:在 Java 5 以后,线程状态被明确定义在其公共内部枚举类型 java.lang.Thread.State:
新建(NEW)new,表示线程被创建出来还没真正启动的状态
就绪,运行(RUNNABLE)runnable,表示该线程已经在 JVM 中执行,当然由于执行需要计算资源,它可能是正在运行,也可能还在等待系统分配给它 CPU 片段,在就绪队列里面排队。
在其他一些分析中,会额外区分一种状态 RUNNING,但是从 Java API 的角度,并不能表示出来。
阻塞(BLOCKED)blocked,这个状态和我们前面两讲介绍的同步非常相关,阻塞表示线程在等待 Monitor lock。
等待(WAITING)waiting,表示正在等待其他线程采取某些操作。
计时等待(TIMED_WAIT)timed_wait:其进入条件和等待状态类似,但是调用的是存在超时条件的方法,比如 wait 或 join 等方法的指定超时版本,
终止(TERMINATED)terminated,不管是意外退出还是正常执行结束,线程已经完成使命,终止运行,也有人把这个状态叫作死亡。