线程的生命周期及五种基本状态

2023-11-03

一.线程的生命周期及五种基本状态

关于Java中线程的生命周期,首先看一下下面这张较为经典的图:

上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:

Java线程具有五中基本状态

新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();

就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;

运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就     绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;

阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:

1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;

2.同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;

3.其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

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

举个通俗一点的例子来解释上面五种状态,比如上厕所:

你平时去商城上厕所,准备去上厕所就是新建状态(new),上厕所要排队,排队就是就绪状态(Runnable),有坑位了,轮到你了,拉屎就是运行状态(Running),你拉完屎发现没有手纸,要等待别人给你送纸过来,这个状态就是阻塞(Blocked),等你上完厕所出来,上厕所这件事情结束了就是死亡状态了。

注意:便秘也是阻塞状态,你便秘太久了,别人等不及了,把你赶走,这个就是挂起,还有一种情况,你便秘了,别人等不及了,跟你说你先出去酝酿一下,5分钟后再过来拉屎,这就是睡眠。

二. Java多线程的就绪、运行和死亡状态

就绪状态转换为运行状态:当此线程得到处理器资源;

运行状态转换为就绪状态:当此线程主动调用yield()方法或在运行过程中失去处理器资源。

运行状态转换为死亡状态:当此线程线程执行体执行完毕或发生了异常。

此处需要特别注意的是:当调用线程的yield()方法时,线程从运行状态转换为就绪状态,但接下来CPU调度就绪状态中的哪个线程具有一定的随机性,因此,可能会出现A线程调用了yield()方法后,接下来CPU仍然调度了A线程的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线程的生命周期及五种基本状态 的相关文章

  • 集成底座双K8S集群扩展升级方案

    集成底座方案是应用于企业信息化建设的集成整合阶段 通过建立统一 标准 柔性 可复用 可扩展的IT架构 解决企业信息化建设过程中缺乏整体规划 集成整合难度大 安全管控不到位等问题 强化企业信息化的架构建设 集成整合 数据治理 安全管控的水平

随机推荐

  • 腾讯测开笔试题

    测开笔试题分享 一个数组里面有混序的正负数 按照以下要求重新排列 1 按照正负间隔的顺序排列 2 同一个符号的数相对顺序不变 3 若某一个符号的数较多 按原顺序放在最后 例如输入 1 2 3 7 9 5 3 4 7 8 11 3 2 期望输
  • .Net WinForm 中关于输入法打开却无法输入中文总结

    根据前面的兄弟们解决方法我做了下总结 希望对以后遇到此问题的同行提供点帮助 大家如果还有好的方法也请回复提供我 共同学习 出现这个问题时我的输入法设置为 注意我这里使用简体中文美式键盘 然后我删除了简体中文美式键盘 添加了英语 美国 美式键
  • Git命令语句

    一 关于Git 1 Git介绍 Git是一个开源的分布式版本控制系统 用于敏捷高效的处理任何或大或小的项目 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件 版本控制 版本控制是一种在开发
  • Android ActionBar的基本用法

    本文翻译了这篇文章 Using the Android action bar ActionBar Tutorial 1 ActionBar的简介 ActionBar位于Activity的顶部 可用来显示activity的标题 Icon Ac
  • 一周AI看点

    本期一周AI看点包括 技术前沿 行业 观点 应用以及投融资等方面 技术前沿 CCAI 2017 香港科技大学计算机系主任杨强 论深度学习的迁移模型在7月22 23日举办的CCAI 2017上 香港科技大学计算机与工程系主任 AAAI Fel
  • 案例:使用seaborn分析泰坦尼克号生还者数据

    目录 一 数据来源 数据的导入 二 主要分析的内容 定义问题 泰坦尼克号乘客基本信息分布情况 乘客的信息与生还数据是否有关联 三 数据清洗 3 1 查看是否有缺失值 3 2 查看数据基本信息 3 3 绘制年龄分布图 通过seaborn的di
  • 学习笔记-架构的演进之k8s的存储生态系统-3月day11

    文章目录 前言 块存储 文件存储 对象存储 总结 附 前言 随着 Kubernetes 的 CSI 规范成为容器业界统一的存储接入标准 现在几乎所有的云计算厂商都支持自家的容器通过 CSI 规范去接入外部存储 能够应用于 CSI 与 Fle
  • 获取JSON里面result的值 以及将里面的(List数组或对象)转换出来并读取到

    前言 记录一下今天的问题 首先我是在定时任务了 每次当项目启动时都需要调用别人的接口他来返回我数据 我并获取到他的数据进行同步更新 到我的数据库表里 那么怎么获取到呢 下面废话不多说 这是我打印出 返回给我的数据 为虚构数据 仅参考 suc
  • 2.深入了解bind函数

    bind函数 1 查看方法 2 详细解说 中文 bind函数 3 bind文档 1 查看方法 使用指令 man bind 2 详细解说 中文 bind函数 1 功能 bind函数把一个本地协议地址赋予一个套接字 对于网际网协议 协议地址是3
  • C# 集合总结

    1 Array ArrayList List lt 类型 gt 数组 连续分配的 查询速度快 但增删不方便 region 链表 2 LinkedList lt 类型 gt LinkedListNode lt 类型 gt 链表 非连续分配 每
  • 第33章_瑞萨MCU零基础入门系列教程之DHT11温湿度获取实验

    本教程基于韦东山百问网出的 DShanMCU RA6M5开发板 进行编写 需要的同学可以在这里获取 https item taobao com item htm id 728461040949 配套资料获取 https renesas do
  • LeetCode最长回文子串

    题目 给你一个字符串 s 找到 s 中最长的回文子串 思路 回文串是正着读与倒着读是一样的字符串 如 aaaccaaa abcba 可以发现其最大的特点就是对称 也就有一个对称中心 所以我们可以将字符串s的每个字符都设为对称中心 由中心向两
  • vue中引入百度地图

    vue中引入百度地图 一 通过vue注册的方式引入 注 vue百度地图官网 安装百度地图 npm install vue baidu map save 引入 使用百度地图首先需要去百度地图开放平台申请ak密钥 登录百度账号后 控制台 gt
  • keil错误 FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED 全部解决方法

    今天我用keil5调试C51的程序 编译都编译不了 出现以下 错误信息 FATAL ERROR L250 CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED 问题分析 说明程序大小受到了版本的限制
  • Python读取csv文件的三种方式

    一 前期准备 Python版本 3 7 3 制作一个不包含头文件的csv文件 为了方便文件内容是纯数字 字符集为utf 8 并命名为test csv 放到程序的根目录下 使用PyCharm创建一个Python工程 并安装Numpy和Pand
  • HarmonyOS创作激励计划启动:助力技术创作突破边界

    即日起推出HarmonyOS创作激励计划 成功投稿并入选的文章将在HarmonyOS开发者公众号上线 9大技术社区同步宣发 不仅有丰厚稿酬 还有机会赢取创作奖品 活动时间 即日起 2024年12月31日 每季度按照活动规则评审奖项 活动面向
  • 国内下载VSCode速度太慢解决问题

    国内下载VSCode速度太慢解决问题 首先要去官网找到相应的下载版本 点击下载 此为官网地址 https code visualstudio com 建议下载64位的压缩包 以上为官网下载地址 可以看到下载速度非常慢 解决方法 右键选中该下
  • 1070 结绳(25 分)

    1070 结绳 25 分 给定一段一段的绳子 你需要把它们串成一条绳 每次串连的时候 是把两段绳子对折 再如下图所示套接在一起 这样得到的绳子又被当成是另一段绳子 可以再次对折去跟另一段绳子串连 每次串连后 原来两段绳子的长度就会减半 给定
  • gin框架34--重定向

    gin框架34 重定向 介绍 案例 说明 介绍 本文主要介绍gin框架中的重定向 HTTP 重定向很容易 内部 外部重定向均支持 案例 源码 package main import github com gin gonic gin net
  • 线程的生命周期及五种基本状态

    一 线程的生命周期及五种基本状态 关于Java中线程的生命周期 首先看一下下面这张较为经典的图 上图中基本上囊括了Java中多线程各重要知识点 掌握了上图中的各知识点 Java中的多线程也就基本上掌握了 主要包括 Java线程具有五中基本状