先来看一张线程的状态图:
我们来一一介绍:
- 初始状态(NEW):当我们在代码中创建了一个线程对象,并未调用start()方法,就说明该线程就进入了初始状态
- 运行状态(RUNNABLE):java线程中将就绪(READY)和运行中(RUNNING)两种状态统称为“运行”。
- 当线程对象被创建,并且调用该对象的start()方法,该状态的线程位于可运行线程池中,等待被线程调度选中,获取 CPU 的使用权,此时处于就绪状态(READY)。就绪状态的线程在获得CPU时间片后变为运行中状态(RUNNING)。
- 阻塞状态(BLOCKED):表示线程因为锁的原因而进入阻塞状态
- 等待状态(WAITING):进入该状态的线程需要等待其它线程做出一些特定动作(通知或中断)
- 超时等待(TIMED_WAITING):该状态不同于等待状态(WAITING),它可以在指定的时间后自行返回。
- 终止(TERMINATED):表示该线程已经执行完毕。