线它是程序执行的最小单元,在进程中并发执行。 线程的生命周期可以分为几个阶段,这些阶段描述了线程从创建到消亡的过程。 线程生命周期的主要阶段如下:
1.新增功能:在此阶段,线程对象已创建,但尚未启动。 此时,可以设置线程的属性(例如,优先级、名称等)。 线程尚未分配系统资源,例如 CPU 时间片和内存空间。
2.可运行:在线程对象上调用 start() 方法后,线程进入可运行状态。 在此阶段,线程拥有运行所需的所有资源,但仍需要等待操作系统调度程序分配 CPU 时间片。 可运行的线程可以在多个线程之间切换以启用并发执行。
3.运行:线程获取 CPU 时间片并开始执行任务。 在此阶段,线程正在处理其任务,例如执行、执行计算等。 当线程完成任务或遇到阻塞情况时,它将退出运行状态。
4.封锁:线程在运行过程中可能会遇到阻塞情况,例如等待 IO 操作完成或等待获取同步锁相。 在阻塞状态下,线程无法执行任务,直到解除阻塞条件。 不会为处于阻塞状态的线程分配 CPU 时间片。
5.等待:与阻塞状态类似,等待该状态的线程也无法执行任务。 但是,等待状态是由线程本身调用 wait() 方法引起的。 在此阶段,线程释放它持有的锁定并进入等待队列。 等待状态的线程需要其他线程调用 notify() 或 notifyall() 方法来唤醒。
6.定时等待:在此阶段,线程将等待指定的时间。 等待状态超时的线程将在指定时间到期后自动返回到可运行状态。 这可以通过调用 sleep() 方法或设置锁的超时等待时间来实现。
7.终止:线程完成任务或遇到未捕获的异常,或被外部线程中断(调用 interrupt() 方法),则进入终止状态。 在此阶段,线程释放资源并结束执行。 线程对象在终止状态后可能是垃圾。
线程在其生命周期中可能会经历不同的状态转换。 了解这些状态和转换可以帮助您更好地了解多线程程序的执行方式以及如何有效地管理和控制线程。
如果你觉得文章对你有帮助,记得点赞关注,我们会继续分享更多精彩的技术干货!
100 帮助计划