9.12. 线程的生命周期

发布于 2023-05-06 12:44:37 字数 858 浏览 55 评论 0

当我们在 Java 程序中新建一个线程时,它的状态是 New。当我们调用线程的 start() 方法时,状态被改变为 Runnable。线程调度器会为 Runnable 线程池中的线程分配  CPU 时间并且讲它们的状态改变为 Running。其他的线程状态还有 Waiting,Blocked 和 Dead。

线程的生命周期指的是从创建到销毁之间的一系列状态,通常有以下 6 个状态:

  1. 新建状态(New):线程对象被创建之后,它就处于新建状态。
  2. 就绪状态(Runnable):一旦调用了 start() 方法,线程就进入就绪状态,此时它并没有开始运行,只是等待系统给它分配执行的时间片。
  3. 运行状态(Running):当线程获得 CPU 时间片并开始执行 run() 方法中的代码时,它就进入了运行状态。
  4. 阻塞状态(Blocked):线程执行某些操作,使得线程不能继续执行下去时,如等待某个操作完成或某资源可用时,线程就进入阻塞状态。当条件满足后,它会重新进入就绪状态。
  5. 等待状态(Waiting):线程执行某些操作,使得线程无限期等待另一个线程的信号或被其他线程中断时,线程就进入等待状态,只能由另一个线程发出唤醒信号才能使线程重新进入就绪状态。
  6. 终止状态(Terminated):当 run() 方法执行结束或出现异常时,线程就进入终止状态。

在线程的整个生命周期中,线程的状态会发生变化,但是所有状态的变化都必须遵循以下几个原则:

  1. 线程只能从就绪状态进入运行状态,而不能直接进入阻塞状态或等待状态。
  2. 线程只能从阻塞状态或等待状态进入就绪状态,而不能直接进入运行状态或其他状态。
  3. 线程的终止状态是最终状态,一旦线程进入终止状态,它就无法再转移到其他状态。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

暮年慕年

暂无简介

0 文章
0 评论
21 人气
更多

推荐作者

懂王

文章 0 评论 0

清秋悲枫

文章 0 评论 0

niceone-tech

文章 0 评论 0

小伙你站住

文章 0 评论 0

刘涛

文章 0 评论 0

南街九尾狐

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文