Java中的线程生命周期– Java中的线程状态

时间:2020-02-23 14:35:37  来源:igfitidea点击:

在使用线程和针对多线程环境进行编程时,了解Java和线程状态下的线程生命周期非常重要。

在上一教程中,我们可以通过实现Runnable接口或者扩展Thread类来创建Java线程类,但是要启动Java线程,我们首先必须创建Thread对象并调用它的start()方法来执行run()方法。
作为线程。

Java中的线程生命周期

下图显示了Java中线程生命周期的不同状态。
我们可以在Java中创建一个线程并启动它,但是线程状态如何从Runnable更改为Running到Blocked取决于线程调度程序的操作系统实现,而Java对此没有完全控制权。

New

当我们使用new运算符创建新的Thread对象时,线程状态为New Thread。
此时,线程还没有激活,它是Java编程内部的一种状态。

Runnable(可运行)

当我们在Thread对象上调用start()函数时,其状态更改为Runnable。
该控件已分配给线程调度程序以完成其执行。
是立即运行此线程还是在运行之前将其保留在可运行线程池中,取决于线程调度程序的OS实现。

运行中(Running)

线程执行时,其状态更改为"正在运行"。
线程调度程序从可运行线程池中选择一个线程,并将其状态更改为"正在运行"。
然后,CPU开始执行该线程。
线程可以将时间从运行状态更改为Runnable,Dead或者Blocked,这取决于时间划分,run()方法的线程完成或者等待一些资源。

锁定/等待(locked/Waiting)

一个线程可以等待其他线程使用线程连接完成,也可以等待一些可用资源。
例如生产者消费者问题或者服务员通知程序实施或者IO资源,则状态更改为"正在等待"。
线程等待状态结束后,其状态将更改为"可运行",然后移回可运行线程池。

死(Dead)

线程执行完毕后,其状态将更改为Dead(死),并且认为该线程未处于活动状态。

以上是线程的不同状态。
最好了解他们以及线程如何更改其状态。