当前位置:首页 > 数码 >

线程的生命周期(Java线程的生命周期)

来源:原点资讯(www.yd166.com)时间:2024-06-17 09:13:31作者:YD166手机阅读>>

在Java中,任何对象都要有生命周期,线程也不例外,它也有自己的生命周期。当Thread对象创建完成时,线程的生命周期便开始了,当run()方法中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或者错误(Error)时,线程的生命周期便会结束。线程的整个生命周期可以分为5个阶段,分别是新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)和死亡状态(Terminated),线程的不同状态表名了线程当前正在进行的活动。在程序中,通过一些操作可以使线程在不同状态之间转换,如下图:

线程的生命周期,Java线程的生命周期(1)

上图中展示了线程各种状态的转换关系,箭头表示可转换的方向,其中,单箭头表示状态只能单向的转换,例如,线程只能从新建状态转换到就绪状态,反之则不能;双箭头表示两种状态可以互相转换,例如,就绪状态和运行状态可以互相转换。通过一张图还不能完全描述清楚线程各状态之间的区别,接下来针对线程生命周期中的五种状态分别进行详细讲解,具体如下。

1. 新建状态(New)

创建一个线程对象后,该线程对象就处于新建状态,此时它不能运行,与其他Java对象一样,仅仅由Java虚拟机为其分配了内存,没有表现出任何线程的动态特征。

2. 就绪状态(Runnable)

当线程对象调用了start()方法后,该线程就进入就绪状态。处于就绪状态的线程位于线程队列中,此时它只是具备了运行的条件,能否获得CPU的使用权并开始运行,还需要等待系统的调度。

3. 运行状态(Running)

如果处于就绪状态的线程获得了CPU的使用权,并开始执行run()方法中的线程执行体,则该线程处于运行状态。一个线程启动后,它可能不会一直处于运行状态,当运行状态的线程使用完系统分配的时间后,系统就会剥夺该线程占用的CPU资源,让其他线程获得执行的机会。需要注意的是,只有处于就绪状态的线程才可能转换到运行状态。

4.阻塞状态(Blocked)

一个正在执行的线程在某些特殊情况下,如被人为挂起或执行耗时的输入/输出操作时,会让出CPU的使用权并暂时中止自己的执行,进人阻塞状态。线程进人阻塞状态后,就不能进入排队队列。只有当引起阻塞的原因被消除后,线程才可以转入就绪状态。

下面就列举一下线程由运行状态转换成阻塞状态的原因,以及如何从阻塞状态转换成就绪状态。

·当线程试图获取某个对象的同步锁时,如里该销被其他线程所持有,则当前线程会进入阻塞状态,如果想从阻塞状态进入就绪状态就必须获取到其他线程所持有的锁。

·当线程调用了一个阻塞式的I/O方法时,该线程就会进入阻寒状态,如果想进入就绪状态就必须要等到这个阻塞的I/O方法返回。

·当线程调用了某个对象的wait()方法时,也会使线程进入阻塞状态,如果想进入就绪状态就需要使用notify()方法唤醒该线程。

·当线程调用了Thread的sleep(long millis)方法时,也会使线程进入阻塞状态,在这种情况下,只需等到线程睡眠的时间到了后,线程就会自动进入就绪状态。

·当在一个线程中调用了另一个线程的join()方法时,会使当前线程进入阻塞状态,在这种情况下,需要等到新加入的线程运行结束后才会结束阻塞状态,进入就绪状态。

需要注意的是,线程从阻塞状态只能进入就绪状态,而不能直接进人运行状态,也就是说,结束阻塞的线程需要重新进入可运行池中,等待系统的调度。

5.死亡状态(Terminated)

如果线程调用stop()方法或nun()方法正常执行完毕,或者线程抛出一个未捕获的异常(Exception)错误(Error),线程就进入死亡状态。一旦进入死亡状态,线程将不再拥有运行的资格,也不能再转换到其他状态。

,

栏目热文

什么情况用线程(线程是什么意思通俗点讲)

什么情况用线程(线程是什么意思通俗点讲)

一、基本的进程和线程概念进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位,比如我们windows电脑上运...

2024-06-17 09:12:40查看全文 >>

线程意味着什么(线程是什么课程里的)

线程意味着什么(线程是什么课程里的)

作者 | LieBrother责编 | 屠敏出品 | CSDN 博客什么是线程?试想一下没有线程的程序是怎么样的?百度网...

2024-06-17 09:31:53查看全文 >>

线程如何用(怎么修改线程)

线程如何用(怎么修改线程)

wait()函数 当一个线程调用一个共享变量的 wait()方法时, 该调用线程会被阻塞挂起,直到发生下面几件事情之一才...

2024-06-17 09:55:52查看全文 >>

线程定义是什么(线程基本概念)

线程定义是什么(线程基本概念)

什么是线程线程是程序执行的最小单元,一个标准的线程是由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。此外线程是进...

2024-06-17 09:28:15查看全文 >>

线程是用来干嘛的(线程是什么意思通俗易懂的)

线程是用来干嘛的(线程是什么意思通俗易懂的)

线程(Thread)是操作系统中能够进行任务调度的最小单位,它是进程内部的一个执行流。下面是对线程概念的详细解释:定义:...

2024-06-17 09:08:39查看全文 >>

线程用什么表示的

线程用什么表示的

操作系统中的进程与线程 实时操作系统中,内核(Kernel)是核心,它的基本功能是多任务的切换和调度,而实现多任务的切换...

2024-06-17 09:54:02查看全文 >>

木本菊花的功效与作用(开封市真有木本菊花吗)

木本菊花的功效与作用(开封市真有木本菊花吗)

菊科花卉里面罕见的木本菊花:白菊木花木君在全球所有种子植物科属中,无论从植物属数或种数看,菊科植物均居第一位,约有100...

2024-06-17 09:13:10查看全文 >>

关于菊花的文字资料(关于菊花的资料简介20字)

关于菊花的文字资料(关于菊花的资料简介20字)

图文/洳语 编辑/洳语北宋理学家周敦颐的《爱莲说》中这样写道:水陆草木之花,可爱者甚蕃。晋陶渊明独爱菊……”,此文颂扬的...

2024-06-17 09:48:09查看全文 >>

菊花的资料与介绍(菊花的资料介绍和作文提纲)

菊花的资料与介绍(菊花的资料介绍和作文提纲)

今天小编要介绍的是“花中四君子”之一的菊花。 菊,它清丽淡雅、芳香袭人,还艳于百花凋后,不与群芳争列,故历来被用来象征恬...

2024-06-17 09:25:21查看全文 >>

写菊花的说明文(写菊花的说明文1500字以上)

写菊花的说明文(写菊花的说明文1500字以上)

拿到作文不会写,一问度娘皆范文。写作指导哪里有?尽在易知小作文!本文是易知小作文对小学语文教材作文题目的第 8 篇写作指...

2024-06-17 09:56:32查看全文 >>

文档排行