线程的生命周期详解

Verilog单周期CPU设计(超详细) 实验 单周期CPU一、设计目的与目标实验内容实验要求二、课程设计器材硬件平台软件平台三、 CPU逻辑设计总体方案指令模块MIPS指令格式指令处理流程数据通路总体结构图设计流程逻辑图四、模块详细设计PCAdd4PCINSTMEMDATAMEMSHIFTER32_L2SHIFTER_COMBINATIONMUX4X32MUX2X5EXT16T32MUX2X32CONUNITREGFILEALUSing... 阅读详情

在这里插入图片描述在这里插入图片描述

导读
与人有生老病死一样,线程也同样要经历开始(等待)、运行、阻塞和结束四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。

一.线程的状态

线程可以分为5个状态:

  • New(新建)
  • Runnable(就绪)
  • Running(运行)
  • blocked(被阻塞)
  • Dead(死亡)

二.线程状态详解

1.New(新建)

当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。
例如:Thread t1=new Thread();

某国皇帝非常宠爱一位妃子,人称咖妃。这位妃子也非常争气,入宫一年左右,就为皇上诞下一位小皇子。 咖妃非常希望自己的儿子当太子,但是要等待机会。

2.Runnable(就绪)

线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();

日复一日,年复一年,皇帝原来越老,小皇子也越长越大,每天在目前的要求下,勤学苦读,他和其他皇子一样,等待着一个机会。

3.Running(运行)

线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。

经过多年的考察,在大臣们的建议下,皇帝终于决定立储君,由于小皇子格外聪颖,又勤学奋进,格外受皇帝赏识,经管他不是长子,皇帝还是力排众议。选他作为太子,从此时此刻开始,他要跟着皇帝处理各种政务,管理国家。

4.blocked(被阻塞)

由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。

正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。

正在等待:调用wait()方法。(调用motify()方法回到就绪状态)

被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)

某天深夜,一份密折改变了原本平和的生活。有人密奏皇帝,太子密谋造反,皇帝大怒,将太子贬为皇子,并下令六部彻查此事,凡是牵连之人一律严办。面对对手制造的冤案,皇子一边按兵不动,一边也派人暗地里调查此事,他又在等待一个机会,东山再起。

5.Dead(死亡)

当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。

自然终止:正常运行run()方法后终止

异常终止:调用stop()方法让一个线程终止运行

经过六部的调查,发现皇子被冤枉,而是有人背地里下套。于是在事情调查清楚后,皇帝恢复了他的太子之位。
。。。。若干年后,皇帝驾崩,太子如愿继位,完成了自己多年的夙愿,至此,皇子登位记完本。

参考资料
1.线程的生命周期

返回专栏目录
【JavaSE】之流程控制与方法 Java基础之Java流程控制与方法相关知识介绍~ 阅读详情

相关推荐

docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp

docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp

m0_55333789的博客 1556

线程的生命周期

1、线程的生命周期(状态) (1)线程一共有6种状态分别为: New:新创建状态,当new一个Thread对象,但未调用start方法后就处于该状态 Runnable:可运行状态,可运行状态实际上分为两种状态一种时Running(正在运行),另 一种是Ready(已准备),这两种状态统称为可运行状态,当线程的start方法被调用后 就会处于reedy状态,此时线程会等待分配CPU时间片,当获取到时间片之后就处于 running状态,同理当时间片用完(系统调度,或调用了yield方法)之后就又回到了re

qq_30155803的博客 2010

警惕AI依赖:如何避免数字水蛭侵蚀你的认知能力

在人工智能技术日益普及的今天,人机协作已成为现代工作流的核心范式。其原理在于通过算法模型辅助人类完成信息处理、内容生成等任务,从而提升效率。然而,过度依赖AI可能导致认知卸载,引发思考能力退化等潜在风险。从技术价值看,AI的核心在于增强而非替代人类智能,关键在于建立健康的协作模式。在应用场景上,无论是编程开发、内容创作还是决策分析,用户都需警惕工具依赖对深度工作、创造性思维和决策责任的侵蚀。本文聚焦于识别AI依赖的早期信号,并提供构建分阶段使用流程、将AI作为质疑者等具体策略,旨在帮助读者守护核心认知能力,

weixin_30240349的博客 624

线程的五大生命周期

线程在创建并启动这一系列操作会经历五大生命周期 分别为:新建(NEW),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead) 当线程被启动后,它不可能一直使用CPU独自运行,还有更多的线程需要使用到CPU,所以CPU会在多条线程之间切换执行命令,于是线程状态也会多次在运行,阻塞之间切换。 线程运行生命周期图 新建状态 (NEW) 当程序使用 new 关键字创建了一个线程之后,该线程就处于新建状态,此时仅由 JVM 为其分配内存,并初始化其成员变量的值。 Thread

Jarvis.y的博客 1255

Time-Interleaved Analog-to-Digital Converters

  这篇论文提供了时间交错模数转换器的教程回顾。在解释了偏置、增益、定时和其他不匹配对变换器性能的影响后,给出了目前解决不匹配问题的方法。论文最后总结了时间交错模数转换器的现状。 1.简介   时间交错模数转换器(ADC)将多个子ADC组合成一个ADC系统,可以实现比单独的子ADC[1]更快的采样速率。历史上,时间交错adc的主要缺点是需要紧密匹配子adc[2]的特性。近年来,由于应用需要非常宽带信号的数字化、功率高效子adc的可用性以及由深亚微米互补金属氧化物硅(CMOS)技术实现的微调技术,使得时间交错

weixin_44537056的博客 6725

编译CycloneDDS和CycloneDDS-CXX踩过的坑——CMake Error at CMakeLists.txt:227 (find_package):

最近编译CycloneDDS和CycloneDDS-CXX踩了两个坑,花了不少时间。做个简单的记录,免得以后又踩到。注意:CycloneDDS-CXX编译依赖CycloneDDS,因此必须先编译CycloneDDS需要严格按照步骤进行,否则要入坑步骤如下,1先编译CycloneDDS以上步骤完成CycloneDDS的编译和安装,生成的bin include lib等位于install目录下面。

usstmiracle的博客 1900

快速入门多线程(一):线程生命周期详解(附流程图详解)

线程的生命周期是多线程编程的核心概念之一,理解它能帮助你更好地控制线程行为,避免常见的并发问题。本文结合流程图、生活化比喻和代码示例来详细解析。

llwszx的博客 1753

OpenDRIVE车道计算避坑指南:为什么你的poly3曲线总对不齐?

本文深入解析OpenDRIVE标准中车道几何计算的三大核心难题:参数化三次多项式(ParamPoly3)的坐标系转换与参数映射、车道偏移与宽度的优先级判定,以及螺旋线(Spiral)接续的平滑性保障。通过实战案例与代码示例,提供了一套避免车道线错位与曲率不连续的精确计算与验证方法,是高精地图开发与仿真场景构建的实用避坑指南。

q9w8e7r6t5的博客 421

Java线程生命周期以及方法详解

前言:现在的操作系统在运行一个程序时, 会为其创建一个进程。 在进程中操作系统调度的最小单元是线程, 也叫轻量级进程(Light Weight Process) , 在一个进程里可以创建多个线程, 这些线程都拥有各自的计数器、 堆栈和局部变量等属性, 并且能够访问共享的内存变量。 处理器在这些线程上高速切换, 让使用者感觉到这些线程在同时执行。 啰嗦一下进程、线程是什么? 进程是指一个内存中...

蒙的博客 3728

Vue3 - 详细实现安装西瓜视频 xgplayer 插件详细配置及使用教程,利用西瓜视频播放器播放 mp4、flv、hls 格式视频文件及视频推流(直播或监控摄像头画面),支持移动端H5及PC网站!

vue3,nuxt3,西瓜视频,xgplayer,插件组件,xgplayer-hls,xgplayer-flv,xgplayer-mp4,播放视频点播和直播视频流,监控实时播放推流,倍速播放,在线flv在线推流地址,HLS播放,vue3西瓜播放器,vue如何使用西瓜视频插件做直播推流回流,视频点播,flv在线视频流播放,截图功能,自定义播放器样式,截屏,监控视频,vue3使用西瓜播放器播放flv、hls、mp4视频,截屏按钮,直播流,报错,黑屏,加载失败,苹果ios不兼容,重连,怎么改样式,很卡,详细教程,

🏆 前端领域优质创作者 1万+

【Unity URP渲染管线下Shader的自定义物体半透明和投影半透明效果_半透明案例分享】

Unity Shader Graph URP渲染管线下的自定义半透明效果_半透明案例分享

暴走约伯的博客 3294

Java线程生命周期详解

Java中的线程生命周期是多线程开发的核心概念。了解线程的生命周期以及它们如何进行状态转换对于编写有效且无错误的多线程程序至关重要。

沐雨风栉 6839

DeepSeek R1-32B医疗大模型的完整微调实战分析(全码版)

【代码】DeepSeek R1-32B医疗大模型的完整微调实战指南(全码版)

AllenLV的博客 5101

线程生命周期详解

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换 1. 新建状态,当程序使用new关

zcw4237256的博客 341

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

线程详解创建及生命周期

线程详解

weixin_44684812的博客 934

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java—线程的生命周期及线程控制方法详解

线程生命周期5种状态 介绍   线程的生命周期经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Bolocked)和死亡(Dead) 状态转换图 新建(New)   程序使用new关键字创建一个线程之后,该线程就处于新建状态,仅仅由Java虚拟机为其分配内存,并初始化其成员变量的值。不会执行线程的线程执行体。如Thread thread = new Thread()。 就绪(Runnable)   也称为“可执行状态”,线程对象调用start()方法后,该线程处于就绪状态。如th

Andya_net的博客 760

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

terminated 线程_线程的生命周期详解

来源于:并发编程网(htt://www.ibfbc.com)每一个线程都有自己的局部变量表,程序计数器,以及生命周期等。在开始解释线程的生命周期之前,请大家思考一个问题:执行了Thread的start方法,就代表该线程已经开始执行了吗?生命周期状态图通过上图可知,线程的生命周期大体可分为如下5个的主要阶段。NEWRUNNABLERUNNINGBLOCKEDTERMINATED1.线程的NEW状态当...

weixin_39628070的博客 254

Java线程的生命周期详解

Thread的生命周期 线程的五种状态: 新建:当一个 Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态 就绪:处于新建状态的线程被star()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run()方法定义了线程的操作和功能 阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让出CP∪并临时中止自己的执行,进入阻塞状态 死亡:线程完成了它的全部工作或线程被提前强制性地

wushaoji321的博客 207

死磕并发之线程的生命周期详解

文章开始大家思考一个问题,执行了Thread的start方法之后就代表该线程已经开始执行了吗?相信大家看完文章应该就能找到答案。 一.线程的生命周期大致分为以下5个阶段 1.NEW 2.RUNNABEL 3.RUNNING 4.BLOCKED 5.TERMINATED 接下来让我们看下这5个阶段分别代表什么。 二.线程的NEW状态 我们使用new关键字创建一个Thread对象时,...

匣与桔 227

Java 线程生命周期详解

Java线程生命周期包含6种状态:NEW(新建)、RUNNABLE(可运行)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(计时等待)和TERMINATED(终止)。NEW状态通过start()进入RUNNABLE;RUNNABLE可能因锁竞争转为BLOCKED,或因wait()/sleep()转为WAITING/TIMED_WAITING;最终线程执行完毕进入TERMINATED。状态转换涉及锁获取、等待/唤醒机制和中断处理,合理管理状态可避免死锁和资源泄漏。最佳实践包括使用

萧曳丶 819

多线程-生命周期详解

问题:线程Thread执行了start方法就表示该线程已近执行了忙? 下面看线程生命周期图 由以上图可以知道,线程的生命周期大致可以分为以下五个阶段:NEWRUNNABLERUNNINGBLOCKEDTERMINATED 1.NEW状态 当我们new出一个Thread类的时候,此时它并不在执行状态,并且它并没有调用Start方法,那么此时线程的状态为New。 NEW状态通过Star...

u010277958的博客 470

线程的生命周期[详解]

线程的生命周期 新建: 当一个Thread类继承其子类的对象被调用声明并创建时,新生的线程对象处于新建状态 就绪: 处于新建状态的线程被start后,将进入线程的队列等待cpu时间片,此时已具备运行条件,只是未分配到cpu资源 运行: 当就绪的线程被调度并匹配到cpu资源,进入运行状态,run()方法中定义了线程的相关操作和功能 阻塞: 在某种情况下,被人为挂起或执行输入操作时,让出cpu并临时中止自己的执行 死亡: 线程完成了它全部的...

weixin_52629592的博客 246
上一篇: Java中的锁之重入锁:ReentrantLock
下一篇: Java内存模型之happens-before
爱写Bug的麦洛
博客等级 码龄11年 1万+粉丝 201原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值