线程的生命周期和状态

55 阅读1分钟

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):

  • 线程执行完成,结束。
  • 可能是因为线程正常执行结束,或者因为异常、错误导致线程提前结束。

这些状态反映了线程在其生命周期中的不同阶段和状态切换。