Java线程状态
JAVA线程具有生命周期,在其生命周期中有不同的状态,分别是以下几种:
- 新建(NEW):线程已被创建但还没启动
- 就绪(RUNNABLE):改线程已在JVM中执行,但没有拿到计算资源或还在等CPU计算资源,还在就绪队列中排队
- 运行中(RUNNING):线程正在运行中(从JAVA API角度不能表示这个状态,所以这个状态有争议)
- 阻塞(BLOCKED):因为线程需要的资源有锁且目前被上锁了,线程处于等待锁的状态
- 等待(WAITING):线程在等其他线程完成先序操作。比如当前线程是手机流水线上最后一步的质检线程,那么就要等组装线程先把手机组装好送来。Thread.join()会令线程进入等待状态
- 计时等待(TIMED_WAIT):基本和等待状态相同,不同之处在于等待的时间是有一个时限的,超时就不等
- 终止(TERMINATED):线程已完成使命,不论是意外退出还是正常执行的退出