1. 初始状态(New):
- 线程被创建但尚未启动。
- 线程对象已经通过
new关键字创建,但尚未调用start()方法。
2. 运行状态(Runnable):
- 线程对象已经调用了
start()方法,处于就绪状态,等待 CPU 资源。 - 处于运行状态的线程可能被系统选中运行,也可能因为时间片耗尽而重新进入就绪状态。
3. 阻塞状态(Blocked):
- 线程因为某些原因暂时放弃对 CPU 的使用权,不运行。
- 常见的原因包括等待某个资源的释放或者等待某个条件的发生。
4. 等待状态(Waiting):
- 线程在等待另一个线程执行特定操作。
- 调用
Object.wait()方法、Thread.join()方法、LockSupport.park()方法等,使线程进入等待状态。
5. 超时等待状态(Timed Waiting):
- 线程在等待另一个线程执行特定操作,但是可以设置最大等待时间。
- 调用带有超时参数的
Object.wait(long timeout)方法、Thread.sleep(long millis)方法、Thread.join(long millis)方法等。
6. 终止状态(Terminated):
- 线程执行完成,结束。
- 可能是因为线程正常执行结束,或者因为异常、错误导致线程提前结束。
这些状态反映了线程在其生命周期中的不同阶段和状态切换。