面时莫慌 | 一文看懂线程的生命周期(一)

本文详细剖析了Java线程的六个生命周期状态:NEW、RUNNABLE、BLOCKED、TIME_WAITING、WAITING和TERMINATED,并阐述了各状态间的转换。重点关注了线程的阻塞、超时等待和无限期等待的区别,以及sleep、wait、join、yield等函数对线程状态的影响。适合Java并发编程学习者和面试备考者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


theme: jzman

这是我参与更文挑战的第21天,活动详情查看: 更文挑战

上篇文章讲到线程的几种创建方式,本篇文章来全面的分析一下线程的生命周期。

一、问题

再介绍线程的生命周期之前,我们先来仔细想想几个问题。

  • 线程的生命周期状态有哪些,状态流程是怎么样的?
  • TIME-WAITINGWAITING区别是什么?
  • BLOCKED*WAITING状态区别是什么?
  • sleepwaitjoinyield几个函数执行对线程分别影响是什么?

带着这些问题,继续往下看吧。

二、线程的生命周期

线程从创建到销毁整个生命周期,一共有六个状态。包括:

  • NEW初始状态,线程被创建,但未执行START之前,该状态扭转到状态RUNNABLE后,不可能再回到此状态。

    A thread that has not yet started is in this state.

  • RUNNABLE运行状态,运行状态实际上内部包含了两种子状态,一个是就绪,另一个是运行。

    A thread executing in the Java virtual machine is in this state.

  • BLOCKED阻塞状态,独特的等待状态,特指等待锁。阻塞状态代表线程放弃了CPU的使用权,进入了等待状态。

    A thread that is blocked waiting for a monitor lock is in this state.

  • TIME-WAITING超时等待状态,超时以后自动返回。一个线程在特定的等待时间内等待另一个线程执行动作会产生。

    A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.

  • WAITING等待状态,无超时的等待状态。一个线程在等待另一个线程执行动作会产生。

    A thread that is waiting indefinitely for another thread to perform a particular action is in this state.

  • TERMINATED终止状态,代表线程执行完成,是线程的终态。

    A thread that has exited is in this state.

线程图生命周期.png

这个图全面反应了从线程创建NEW状态到线程结束TERMINATED状态各个状态流转的条件,无需做过多的解释,具体调用的函数请看Java官方文档。


哥佬倌,莫慌到走!觉好留个赞,探讨上评论。欢迎关注面试专栏面时莫慌 | Java并发编程,面试加薪不用愁。也欢迎关注我,一定做一个长更的好男人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值