线程的生命周期

线程生命周期 本文主要介绍了线程生命周期,希望能对学习线程的同学们有所帮助。 文章目录 1. 综述 2. 线程的生命周期 阅读详情

在我们了解线程生命周期之前,可以先看看下面张图,我觉得理解了线程的生命周期才能更好的学习多线程。

线程的生命周期:

线程的生命周期分为5个部分:分别是新建状态、就绪状态、运行状态,阻塞状态、死亡状态。

新建状态(new):指新建了一个线程对象。Thread    t1 =new Thread();这里就新建了一个Thread类的线程对象。

就绪状态(Runnable):当线程对象创建后,该线程对象自身或者其他对象调用了该对象的start()方法。该线程就位于了可运行池中,变的可运行,等待获取cpu的使用权。因为在同一时间里cpu只能执行某一个线程。

运行状态(Running): 当就绪状态的线程获取了cpu的时间片或者说获取了cpu的执行时间,这时就会调用该线程对象的run()方法,然后就从就绪状态就入了运行状态。

阻塞状态(Blocked):阻塞状态就是线程因为某种原因暂时放弃了对cpu的使用权,暂时停止运行。直到线程再次进入就绪状态,才有机会转到运行状态。阻塞状态分为三种情况:

等待阻塞:运行状态的线程调用了wait()方法后,该线程会释放它所持有的锁,然后被jvm放入到等待池中,只有等其他线程调用Object类的notify()方法或者norifyAll()方法时,才能进入重新进入到就绪状态。

同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,JVM就会把该线程设置为阻塞状态,一直到线程获取到同步锁,才能转入就绪状态。

其它阻塞:运行的线程在执行sleep()或者join()方法时,或者发出了I/O请求,JVM就会把该线程设置为阻塞状态,当sleep()状态超时、join()等待等待线程终止或者超时、或者I/O处理完毕时,线程重进转入到就绪状态。在这需要注意的是sleep()方法和wait()不同,sleep不会释放自身所持有的锁。

死亡状态(Dead):当线程执行完了或者因异常退出了run()的执行,该线程的生命周期就结束了。

参考:https://blog.youkuaiyun.com/evankaka/article/details/44153709#t3

到这里线程的生命周期介绍就结束了,希望能与大家多多探讨。

Java 简易版 UDP 多人聊天室 【代码】Java 简易版 UDP 多人聊天室。 阅读详情

相关推荐

Win11桌面图标小箭头去除与恢复:解决任务栏关联错误的完整指南

本文提供了一份完整的Win11桌面图标小箭头去除与恢复指南,重点解决了因错误方法导致的任务栏关联错误问题。通过分析注册表中IsShortcut键值与Shell Icons的原理,推荐安全的“替换图标资源法”,并提供了可一键执行的批处理脚本,确保在美化桌面的同时不影响系统功能与默认应用设置。

weixin_29288313的博客 943

线程的五大生命周期

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

Jarvis.y的博客 1255

CNN经典论文(一)LeNet

Gradient-Based Learning Applied to Document Recognition(梯度学习在文档识别中的应用) Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner 发表时间:December 1998 期刊:Proceedings of the IEEE 影响:世界上第一个卷积神经网络 论文地址:Gradient-Based Learning Applied to Document Recognition

loveling丶的博客 3597

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

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

llwszx的博客 1753

COMSOL电磁仿真-网格剖分-边界层

介绍COMSOL在低频电磁场中边界层网格的剖分方法。

奇妙水果的技术博客,欢迎交流技术~ 4479

GD32单片机引脚复用指南:如何让JTAG接口的PA15/PB3发挥第二功能?

本文详细介绍了GD32F103Cx系列单片机如何通过AFIO模块进行引脚复用,特别是将默认用于JTAG调试接口的PA15、PB3等引脚释放为普通IO或复用功能引脚。文章从原理出发,结合代码实践,讲解了如何配置调试端口重映射,将JTAG引脚安全地转换为GPIO或定时器通道,并提供了常见问题排查与最佳实践,帮助开发者高效利用有限的引脚资源。

nept的博客 807

Java线程生命周期详解

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

沐雨风栉 6840

手眼标定(EyeToHand)推导

Base为基坐标系(B),工具末端坐标系(T),标定板为Mark坐标系(M),相机坐标系(C)对于每两个姿态都存在上式,组成一个AX=XB的矩阵方程,X为。此时转换成AX=0的问题,单纯用SVD求奇异解便可得到。相机坐标系到Base基坐标系下的转换关系。已知标定板与机械臂末端的相对位置固定不变,,即。带入(2)式求,至此求解出需要的手眼矩阵。在眼在手外的时候,其实是要求解。

stevenreally6的博客 1143

java中,线程的生命周期

java中,线程的生命周期 一、什么是线程? 见之前写的。 当线程启动后(线程对象调用start方法),它不能一直"独占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。 二、线程的生命周期是什么? 在线程的生命周期中: 它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。 新建...

SeniorShen的博客 1万+

无人机威胁检测(Hostile Drone Detection)——基于YOLOv10与UI界面的实现

Anti-UAV数据集由多种场景下的无人机视频与图片组成,包含无人机目标的多样化姿态、背景、光照变化,专门用于反无人机检测研究。YOLO(You Only Look Once)系列是当前流行的实时目标检测算法,具有速度快、精度高的特点。网络结构优化:更深更轻的主干网络,提升特征提取能力。检测头改进:多尺度特征融合,更好检测小型目标如无人机。训练技巧:使用自动混合精度训练(AMP)、数据增强、标签平滑等技术。

YOLO 230

vue-vben-admin 打包编译报错Failed to resolve entry for package “@vben-core/design“ 的解决方法

如果你在你是不是在 apps/子目录下执行了 build?# 项目根目录 pnpm build而不是在下面单独打包。这个问题本身不复杂,但非常容易被误导去“怀疑依赖、怀疑配置、怀疑人生”。实际上,只要理解vue-vben-admin 是 monorepo 架构,很多类似问题都会迎刃而解。如果你后面还遇到 vben-admin 的构建、部署、权限或性能相关问题,这一套思路都很有用。希望这篇记录,能帮你节省至少半小时的排坑时间。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 423

98. 线程生命周期

Java线程生命周期包括6种状态:NEW(新建)、RUNNABLE(可运行)、BLOCKED(阻塞)、WAITING(无限等待)、TIMED_WAITING(超时等待)和TERMINATED(终止)。NEW是初始状态,需调用start()进入RUNNABLE状态;RUNNABLE表示线程就绪或运行中,可能等待CPU资源;BLOCKED是等待锁的状态;WAITING和TIMED_WAITING是主动等待状态;TERMINATED是终止状态。线程状态转换受JVM和操作系统共同管理,主流实现采用1:1线程模型。

weixin_43484713的博客 838

[PCIe5.0] 5.3.1.4.2 D3Cold State

主电源(Vcc)完全断开,仅保留极少量辅助电源(Vaux)用于维持基本唤醒功能设备功能完全关闭,所有寄存器状态丢失(除非有特殊存储)需要完全重新初始化才能恢复工作比D3Hot状态功耗更低,但唤醒延迟更长。

系统固件工程师 452

Java线程生命周期:Java线程生命周期全景解读

在多线程编程中,理解线程的生命周期对于编写有效、高效的代码至关重要。线程生命周期通常描述了线程从创建到死亡的一系列状态变化过程,但其实不仅仅局限于这些状态的简单转换。线程生命周期的理解应该考虑系统资源的分配、线程调度、同步、通信,以及在这些状态转换中所涉及的复杂机制。然而,操作系统和JVM的线程调度策略、同步机制(如锁)、等待/通知模式以及线程自身的方法调用,都会对这些状态产生影响,使得线程的生命周期变得更加复杂。

逆流的小鱼 2367

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

线程的生命周期与线程池的生命周期(示例代码感受整个生命周期)

线程是进程中的一个执行单元,是 CPU 调度的基本单位,一个进程可以包含多个线程,它们共享该进程的资源。进程是程序在操作系统中的一个执行实例,是操作系统进行资源分配和调度的基本单位。特点每个进程都有自己独立的地址空间、数据、代码、文件等资源,进程之间相互独立。不同进程之间不能直接访问彼此的内存,需要通过 管道(Pipe)、消息队列(Message Queue)、共享内存(Shared Memory)、Socket 等 方式进行通信。// 当前持有锁的线程// 锁状态while (!

weixin_54925172的博客 864

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

线程生命周期、线程通讯

有关线程生命周期就要看下面这张图,围绕这张图讲解它的方法的含义,和不同方法间的区别。yield()让当前正在运行的线程回到就绪,以允许具有相同优先级的其他线程获得运行的机会。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序再次选中。同时yield()不会放弃锁资源,所以有可能会出现死锁。1)第一个很重要的区别就是,wait方法必须正在同步环境下使用,比如synchronized方法或者同步代码块。

java领域分享 2763

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

线程的生命周期以及状态

生命周期 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 五中基本状态 新建状态(New) 当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable) 当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行; 运行状态(Running) 当CPU开始调度处于就绪状态的线程时,此

Venus's Blog 1万+

线程的生命周期_死磕 java线程系列之线程的生命周期

(手机横屏看源码更方便)注:java源码分析部分如无特殊说明均基于 java8 版本。简介大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。常见的错误有:就绪状态、运行中状态(RUNNING)、死亡状态、中断状态、只有阻塞没有等待状态、流程图乱画等,最常见的错误就是说线程只有5种状态。今天这篇文章会彻底讲清楚线程的生命周期,并分析synchronized...

weixin_39738380的博客 186
上一篇: Interger包装类
下一篇: 线程调度的学习
coder150806
博客等级 码龄8年 79粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值