Java 中的线程生命周期 - Java 中的线程状态
当您使用线程和为多线程环境编程时,了解Java 中的线程生命周期和线程状态非常重要。从上一个教程中,我们可以通过实现 Runnable 接口或扩展 Thread 类来创建Java 线程类,但要启动 Java 线程,我们首先必须创建 Thread 对象并调用其 start() 方法以将 run() 方法作为线程执行。
Java 中的线程生命周期
下图显示了 Java 中线程生命周期的不同状态。我们可以在 Java 中创建一个线程并启动它,但线程状态如何从 Runnable 变为 Running 再变为 Blocked 取决于线程调度程序的操作系统实现,而 Java 对此没有完全控制权。
新的
当我们使用new运算符创建一个新的 Thread 对象时,线程状态为 New Thread。此时,线程不处于活动状态,这是 Java 编程的内部状态。
可运行
当我们在 Thread 对象上调用 start() 函数时,它的状态将更改为 Runnable。控制权交给线程调度程序来完成它的执行。是否立即运行此线程或在运行前将其保留在可运行线程池中,取决于线程调度程序的操作系统实现。
跑步
当线程正在执行时,其状态将更改为正在运行。线程调度程序从可运行线程池中挑选一个线程并将其状态更改为正在运行。然后 CPU 开始执行此线程。线程可以从运行状态更改为可运行、死亡或阻塞,这取决于时间分片、run() 方法的线程完成或等待某些资源。
阻塞/等待
线程可以等待其他线程使用线程连接完成,也可以等待某些资源可用。例如生产者消费者问题或等待者通知程序实现或 IO 资源,则其状态将更改为等待。一旦线程等待状态结束,其状态将更改为可运行,并移回可运行线程池。
死的
一旦线程执行完毕,其状态将更改为 Dead,并被视为非活动状态。以上是线程的不同状态。了解它们以及线程如何改变其状态是很好的。这就是 Java 中线程生命周期的全部内容。