• 34.线程的生命周期【20220812】


    1、线程的生命周期就是线程从一开始创建,到run方法执行完毕以后的状态变化。[状态之间的切换]
    2、线程的生命周期几种状态【1、新建状态 2、就绪状态 3、运行状态  4.阻塞状态 5.死亡状态】

    线程的生命周期描述
    1.新建状态:通过new的方式创建出线程对象,此时线程就进入到创建状态【新建状态】。
               新建状态的线程是不能运行。
               新建状态的线程调用start方法,进入就绪状态

    2.就绪状态:线程具备运行能力,只差操作系统【CPU】分配给他运行时间片【万事具备,只欠时间片】
               得到操作系统【CPU】分配给他运行时间片,此时开始执行run方法,进入运行状态。

    3.运行状态:线程运行run方法。
            回到就绪状态:
            1.操作系统【CPU】分配给他运行时间片使用完毕,回到就绪状态。

            进入阻塞状态
            1.运行状态的线程执行了sleep方法,进入阻塞状态。
            2.运行状态的线程执行了wait方法,进入阻塞状态。
            3.运行状态的线程执行输入/输出动作,进入阻塞状态。
            ......

            进入死亡状态
            1.运行状态的线程run方法执行完毕,进入死亡状态。
            2.运行状态的线程调用stop()/destroy() ,进入死亡状态。

    4.阻塞状态:线程暂停运行
            回到运行状态
            阻塞状态中的线程,结束了造成阻塞的原因,此时线程进入就绪状态,得到操作系统【CPU】分配给他运行时间片就可以进入运行状态。

            运行状态进入阻塞状态原因:
            1.运行状态的线程执行了sleep方法,进入阻塞状态,休眠时间结束/interrupt,进入就绪状态
            2.运行状态的线程执行了wait方法,进入阻塞状态,调用notify/notifyAll,进入就绪状态
            3.运行状态的线程执行输入/输出动作,进入阻塞状态,输入/输出结束,进入就绪状态        

    5.死亡状态:线程运行结束,释放运行资源。
            死亡状态的线程是不能运行,除非再一次使用strat方法重新启动运行。

  • 相关阅读:
    iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)
    pygame实现物体运动拖尾尾迹-渐隐版
    .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
    julia调用slurm进行多节点运行
    ASR语音识别纠错-fast correct
    学习嵌入式可以胜任哪一些行业?
    企业微信接入芋道SpringBoot项目
    28. 找出字符串中第一个匹配项的下标 KMP C++
    重学操作系统(一)操作系统概述
    解决办法:AndroidStudio升级到android-studio-2021.3.1.16-windows.exe的坑
  • 原文地址:https://blog.csdn.net/guizhaiteng/article/details/126308226