专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java线程的状态

Java线程的状态

更新时间:2022-12-07 11:42:46 来源:星辉 浏览764次

Java教程中,大家会学到线程,线程是为执行特定任务而创建的正在执行的程序。Java 线程的生命周期从它的诞生开始,到它的死亡结束。

Thread 类的 start() 方法用于启动线程的执行并使线程进入可运行状态,而 Thread 类的 sleep() 和 wait() 方法使线程进入不可运行状态。

在不可运行状态之后,线程再次进入可运行状态并开始执行。线程的run()方法非常重要。执行完run()方法后,线程的生命周期就结束了。

线程的这些阶段就是Java中线程的状态。

要在程序中使用线程,识别线程状态很重要。下图展示了Java线程生命周期中的线程状态。

Java 中的线程状态

线程是程序中的执行路径,它会经历线程的以下状态。五种状态如下:

新的

可运行

跑步

阻塞(不可运行状态)

死的

新(新生儿状态)

当 Thread 类的一个实例被创建时,一个新线程就诞生了,并且已知处于 New-born 状态。也就是说,当一个线程诞生时,它进入了新的状态,但它的执行阶段还没有在实例上开始。

简单来说,Thread 对象创建了,但是它不能执行任何程序语句,因为它不处于线程的执行状态。只能在新线程上调用 start() 方法;否则,将抛出IllegalThreadStateException 。

可运行状态

新生线程的第二阶段是执行阶段。当在线程的新实例上调用 start() 方法时,它进入可运行状态。

在可运行状态下,线程已准备好执行并等待处理器的可用性(CPU 时间)。有很多准备执行的线程,它们都在队列(line)中等待。

如果所有线程的优先级都相同,则CPU按照先到先得的方式为每个线程分配一个时隙执行。为线程分配时间的过程称为时间分片。线程可以从运行、等待或新状态进入可运行状态。

运行状态

运行意味着处理器 (CPU) 已为线程分配时隙以供其执行。当线程调度程序从可运行状态中选择一个线程执行时,它进入运行状态。看上图。

在运行状态下,处理器将其时间交给线程执行并执行其运行方法。它是线程执行其实际功能的状态。线程只能从可运行状态进入运行状态。

正在运行的线程可能会在以下任何一种情况下放弃其控制并进入阻塞状态。

当线程调用 sleep() 方法休眠指定时间后,该线程在该时间段内出队列。一旦该时间段过去,线程将再次重新进入可运行状态。

当线程使用 suspend() 方法挂起一段时间以满足某些条件时。可以使用 resume() 方法恢复挂起的线程。

当在线程上调用 wait() 方法等待一段时间。可以使用 notify() 或 notifyAll() 方法再次运行处于等待状态的线程。

封锁状态

当线程挂起、休眠或等待一段时间以满足某些条件时,线程被认为处于阻塞状态。

死亡状态

当线程的 run() 方法完成语句的执行时,线程自动死亡或进入死状态。也就是说,当线程从 run() 方法中退出时,线程就被终止或死亡。当调用 stop() 方法时,线程也可能死掉。

在Java中线程的生命周期中,线程以多种方式从一种状态移动到另一种状态。这是因为在多线程环境下,当多个线程在执行时,一次只能有一个线程使用CPU。

所有其他线程都处于其他一些状态,要么等待打开 CPU,要么等待满足某些条件。因此,一个线程总是处于这五种状态中的任何一种。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>