线程共有 5 种状态,在特定的情况下,线程可以在不同的状态之间切换:
- 创建状态:实例化一个新的线程对象,还未启动。
- 就绪状态:创建好的线程对象调用 start 方法完成启动,进入线程池等待抢占 CPU 资源。
- 运行状态:线程对象获取了 CPU 资源,在一定的时间内执行任务。
- 阻塞状态:正在运行的线程暂停执行任务,释放所占用的 CPU资源,并在解除阻塞状态之后也不能直接回到运行状态,而是重新回到就绪状态,等待获取 CPU 资源。
- 终止状态:线程运行完毕或因为异常导致该线程终止运行。
线程状态之间的转换图: