9.12. 线程的生命周期
当我们在 Java 程序中新建一个线程时,它的状态是 New。当我们调用线程的 start() 方法时,状态被改变为 Runnable。线程调度器会为 Runnable 线程池中的线程分配 CPU 时间并且讲它们的状态改变为 Running。其他的线程状态还有 Waiting,Blocked 和 Dead。
线程的生命周期指的是从创建到销毁之间的一系列状态,通常有以下 6 个状态:
- 新建状态(New):线程对象被创建之后,它就处于新建状态。
- 就绪状态(Runnable):一旦调用了 start() 方法,线程就进入就绪状态,此时它并没有开始运行,只是等待系统给它分配执行的时间片。
- 运行状态(Running):当线程获得 CPU 时间片并开始执行 run() 方法中的代码时,它就进入了运行状态。
- 阻塞状态(Blocked):线程执行某些操作,使得线程不能继续执行下去时,如等待某个操作完成或某资源可用时,线程就进入阻塞状态。当条件满足后,它会重新进入就绪状态。
- 等待状态(Waiting):线程执行某些操作,使得线程无限期等待另一个线程的信号或被其他线程中断时,线程就进入等待状态,只能由另一个线程发出唤醒信号才能使线程重新进入就绪状态。
- 终止状态(Terminated):当 run() 方法执行结束或出现异常时,线程就进入终止状态。
在线程的整个生命周期中,线程的状态会发生变化,但是所有状态的变化都必须遵循以下几个原则:
- 线程只能从就绪状态进入运行状态,而不能直接进入阻塞状态或等待状态。
- 线程只能从阻塞状态或等待状态进入就绪状态,而不能直接进入运行状态或其他状态。
- 线程的终止状态是最终状态,一旦线程进入终止状态,它就无法再转移到其他状态。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论