当前位置: 首页 > news >正文

你了解线程的状态转换吗

本文概述:
讲述线程的六种状态.
你可能已经了解了六种状态, 但是你知道 sleep 被唤醒之后, wait ()被 notify 之后进入了什么状态吗?

本文只是开胃小菜, 你看看下一篇文章对你有没有帮助.

![[Pasted image 20230308124643.png]

一共有六种状态:

  1. New 新建状态
  2. Runnable 运行状态
  3. Blocked 阻塞状态
  4. Waiting 等待状态
  5. TimedWaiting 计时等待
  6. Termiated 被终止状态

我们需要了解, 一个线程任意时刻, 只会处于一种状态.

New 创建状态

表示线程被创建, 但是没有被启动的状态. 在代码层面代表的就是 new Thread ()到调用 start ()方法之前.
当调用了 start () 方法之后, 进入 Runnable 状态

Runnable 状态

Runnable 对应的是操作系统中的两种状态, 分别是 Running 和 Ready .也就是说,Runnable 代表的不是 Running 正在运行, 而是具备运行的能力, 准备好了线程运行所需要的资源, 只要被调度就可以开始执行了

阻塞状态

注: 经常会把 Blocked,Waiting,TimeWaiting 统称为阻塞状态, 这一点要注意了.

Blocked

这里指的是进入 synchronized 保护的代码, 没有抢到 monitor 锁的情况下.
这里要疯狂注意了, 如果你对 synchronized 的三种锁有了解, 你需要注意一下这里指的是重量锁

对于阻塞状态, 比如说另一个线程释放锁了,在拿到锁的前提下, 会转为 Runnable 状态.
如果拿不到锁, 永久也不会主动恢复

Waiting 状态和 Timewaiting 状态

Waiting:
比如说 Object. wait ()方法
比如说 Thread. join ()方法
Timewaiting:
sleep ()
wait (time)
join (time)

注意啦注意啦, join 方法, 只有 join 运行的线程结束, 或者是被中断了, 才会进入 Runnable 状态.
下面的很重要, 如果 wait (方法)都是通过 notify 和 notifyAll 来唤醒的吧, 对于这两个方法是必须获取锁, 才能调用的 (仔细思考一下, 这都是 Object 中的对象), 而唤醒之后, 被唤醒的线程会进入 Blocked 状态, 他只是拥有了去抢夺锁的权力.

相关文章:

你了解线程的状态转换吗

本文概述: 讲述线程的六种状态. 你可能已经了解了六种状态, 但是你知道 sleep 被唤醒之后, wait ()被 notify 之后进入了什么状态吗? 本文只是开胃小菜, 你看看下一篇文章对你有没有帮助. 一共有六种状态: New 新建状态Runnable 运行状态Blocked 阻塞状态Waiting 等待状态Tim…...

MyBatis-Plus联表查询的短板,该如何解决呢

mybatis-plus作为mybatis的增强工具,它的出现极大的简化了开发中的数据库操作,但是长久以来,它的联表查询能力一直被大家所诟病。一旦遇到left join或right join的左右连接,你还是得老老实实的打开xml文件,手写上一大段…...

吲哚菁绿-巯基,ICG-SH,科研级别试剂,吲哚菁绿可用于测定心输出量、肝脏功能、肝血流量,和对于眼科血管造影术。

ICG-THIOL,吲哚菁绿-巯基 中文名称:吲哚菁绿-巯基 英文名称:ICG-THIOL 英文别名:ICG-SH 性状:绿色粉末 溶剂:溶于二氯甲烷等其他常规有机溶剂 稳定性:冷藏保存,避免反复冻融。 存储条件&…...

深度剖析JavaOptional类

Java Optional 类 Optional类在 Java 8中被加了进来,提供了一种处理业务逻辑想要的值可能没有出现(null)也可能出现的情况,可能直到目前,我们还是用null 来表示业务值不存在的情况,但是这可能导致空指针异常,Java 8新添加 Optional类可以从一定程度上来解决这个问题。 O…...

平面设计软件Corel CDR2023又开始放大招啦,CorelDRAW Graphics Suite 2023有哪些新增功能?

CorelDRAW 2023中文版即将于2023年3月14日,在苏州举行线上直播的2023新品发布会,本次发布会主题为“设计新生力,矢量新未来”。 发布会邀请思杰马克丁公司领导、Corel 中国区总经理分享思杰与 Corel 的合作模式及在 CorelDRAW 产品上推动历程…...

初学torch【报错:expected scalar type double but found float、rmse】

目录 一、inout 二、expected scalar type double but found float 报错 三、pytorch中回归评价rmse: 一、inout torch网络训练,输入需要转换为tensor格式: import torch import numpy A torch.arange(12, dtypetorch.float32).reshape((…...

金三银四、金九银十 面试宝典 JAVASE八股文面试题 超级无敌全的面试题汇总(接近3万字的面试题,让你的JAVA语法基础无可挑剔)

JavaSE八股文 - 面试宝典 一个合格的 计算机打工人 ,收藏夹里必须有一份 JAVA八股文面试题 ,特别是即将找工作的计算机人,希望本篇博客对你有帮助! 本文参考了诸多大佬的面试题帖子,ps:白大锅、哪吒、英雄…...

数据结构:链式二叉树初阶

目录 一.链式二叉树的逻辑结构 1.链式二叉树的结点结构体定义 2.链式二叉树逻辑结构 二.链式二叉树的遍历算法 1.前序遍历 2.中序遍历 3.后序遍历 4.层序遍历(二叉树非递归遍历算法) 层序遍历概念: 层序遍历算法实现思路: 层序遍历代码实现: 三.链式二叉树遍历算…...

公式编写1000问9-12

9.问: 买入:日线创100日新高 ,周线(5周)BIAS>10 卖出:2日收盘在30线下方 注:买卖都只要单一信号即可,不要连续给出信号 我今天才开始学习编写,可是没有买入信号,不知道哪错了? B1…...

C++11:类的新功能和可变参数模板

文章目录1. 新增默认成员函数1.1 功能1.2 示例2. 类成员变量初始化3. 新关键字3.1 关键字default3.2 关键字delete补充3.3 关键字final和override4. 可变参数模板4.1 介绍4.2 定义方式4.3 展开参数包递归展开参数包优化初始化列表展开参数包逗号表达式展开参数包补充5. emplace…...

【Java学习笔记】15.Java 日期时间(1)

Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。 第一个构造函数使用当前日期和时间来初始化对象。 Date( )第二个构造函数接收一个参数,该参数是从 1970 年 1 月 1 日起的毫秒数。 Date(long …...

在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手

目前的空余时间主要都在研究ROS2,最终目的是控制自己用舵机组装的机械手。 由于种种原因,先控制Gazebo的自定义机械手。 先看看目前的成果 左侧是rviz2中的moveit组件的机械手,右侧是gazebo中的机械手。在moveit中进行路径规划并执行后&#…...

Java-线程池 原子性 类

Java-线程池 原子性 类线程池构造方法调用Executors静态方法创建调用方法直接创建线程池对象原子性volatile-问题出现原因:volatile解决原子性AtomicInteger的常用方法悲观锁和乐观锁synchronized(悲)和CAS(乐)的区别并发工具类Hashtable集合ConcurrentHashMap原理:CountDownLa…...

力扣sql简单篇练习(二十五)

力扣sql简单篇练习(二十五) 1 无效的推文 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT tweet_id FROM Tweets WHERE CHAR_LENGTH(content)>151.3 运行截图 2 求关注者的数量 2.1 基本题目内…...

计算机网络:OSPF协议和链路状态算法

OSPF协议 开放最短路经优先OSPF协议是基于最短路径算法SPF,其主要特征就是使用分布式的链路状态协议OSPF协议的特点: 1.使用泛洪法向自治系统中的所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻的路由器又…...

利用表驱动法+策略模式优化switch-case

1.前言 我有一个需求:有四个系统需要处理字段,一开始利用switch-case进行区分编码,后期字段处理越来越多,导致switch-case代码冗余,不太好,然后想通过java单继承多实现的性质进行优化。 2.实现 2.1定义S…...

SpringBoot创建和使用

目录 什么是SpringBoot SpringBoot的优点 SpringBoot项目的创建 1、使用idea创建 2、项目目录介绍和运行 Spring Boot配置文件 1、配置文件 2、配置文件的格式 3、properties 3.1、properties基本语法 3.2、读取配置文件 3.3、缺点 4、yml 4.1、优点 4.2、yml基本…...

which、whereis、locate文件查找命令

Linux下查找文件的命令有which、whereis、locate和find,find命令因要遍历文件系统,导致速度较慢,而且还会影响系统性能,而且命令选项较多,就单独放一篇介绍,可参见find命令——根据路径和条件搜索指定文件_…...

Uipath Excel 自动化系列14-SaveExcelFile(保存Excel)

活动描述 SaveExcelFile 保存Excel:保存工作簿,在修改 Excel 文件的用户界面自动化活动之后使用此活动,以保存对文件的更改 SaveExcelFile As 另存Excel : 将workbook 另存为文件 SaveExcelFile As PDF :将Excel 另存为PDF文件。该三个活…...

MyBatis学习

MyBatis优点 轻量级,性能出色 SQL 和 Java 编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据 开发效率稍逊于HIbernate,但是完全能够接受 补充:POJO 一:什么是POJO POJO的名称有多种,pure old…...

WiFi CSI感知技术全攻略:从原理到实践的深度探索

WiFi CSI感知技术全攻略:从原理到实践的深度探索 【免费下载链接】Awesome-WiFi-CSI-Sensing A list of awesome papers and cool resources on WiFi CSI sensing. 项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-WiFi-CSI-Sensing 一、技术原理&…...

OWL ADVENTURE快速上手:10分钟完成本地部署与第一个识别Demo

OWL ADVENTURE快速上手:10分钟完成本地部署与第一个识别Demo 你是不是也对那些能看懂图片、能回答图片问题的AI模型感到好奇?OWL ADVENTURE就是这样一个模型,它能理解图片里的内容,然后和你聊天。听起来很酷,但会不会…...

用 AI 助手清理 Windows C盘缓存:AppData/IDE/AI模型深度分析与安全清理实战

关键词:C盘清理、Windows磁盘优化、AppData缓存、AI工具缓存、VS Code扩展、Hugging Face缓存、Ollama模型清理、WorkBuddy 适用系统:Windows 10 / Windows 11 难度:⭐⭐(适合有基础的开发者) 目录 背景:开发机C盘为何特别容易爆满 环境准备 Step 1:调用AI进行深度磁盘扫…...

GLM-4-9B-Chat-1M惊艳效果:输入50万字小说,精准定位伏笔与人物关系图谱

GLM-4-9B-Chat-1M惊艳效果:输入50万字小说,精准定位伏笔与人物关系图谱 1. 百万长文处理新标杆 想象一下,你手头有一部50万字的网络小说,想要找出所有埋设的伏笔线索,理清复杂的人物关系网。传统方法可能需要花费数天…...

Qwen3-Reranker-8B企业落地:保险条款智能比对系统重排模块部署

Qwen3-Reranker-8B企业落地:保险条款智能比对系统重排模块部署 1. 项目背景与需求场景 保险行业每天需要处理大量的条款文档比对工作,比如新老条款对比、不同产品条款差异分析、合规性检查等。传统的人工比对方式效率低下,容易出错&#xf…...

如何用Penpot构建完整的用户体验地图和用户旅程:7步打造完美设计流程

如何用Penpot构建完整的用户体验地图和用户旅程:7步打造完美设计流程 【免费下载链接】penpot Penpot - The Open-Source design & prototyping platform 项目地址: https://gitcode.com/GitHub_Trending/pe/penpot Penpot作为开源的设计与原型平台&…...

开源像素艺术生成工具上手指南:像素幻梦2.0-Stable镜像免配置部署

开源像素艺术生成工具上手指南:像素幻梦2.0-Stable镜像免配置部署 1. 像素幻梦简介 像素幻梦(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型构建的下一代像素艺术生成工具。它采用16-bit像素工坊风格的视觉设计,为创作者提供沉浸式的AI绘图体验。…...

Python自动化办公:3种PDF水印处理技巧(附完整代码)

Python自动化办公:3种PDF水印处理技巧(附完整代码) 在数字化办公场景中,PDF文档的水印处理已成为高频需求。无论是合同归档需要添加版权标识,还是内部文件流转需清除敏感标记,传统手动操作既耗时又易出错。…...

OpenClaw跨平台同步:GLM-4.7-Flash配置在多设备复用

OpenClaw跨平台同步:GLM-4.7-Flash配置在多设备复用 1. 为什么需要跨设备同步OpenClaw配置 去年冬天,我在家里配置好OpenClaw接入GLM-4.7-Flash模型后,第二天到办公室想继续调试时,发现所有配置都要从头再来。这种重复劳动让我意…...

不用命令行!Win11任务栏图标消失的图形化解决方案(Explorer重启神器推荐)

Win11任务栏图标消失?5种可视化修复方案与深度解析 每次切换虚拟桌面后,Win11任务栏图标集体"失踪"的毛病,堪称微软系统最顽固的"幽灵故障"之一。作为从Windows 95时代就存在的资源管理器痼疾,这个问题在Win1…...