线程七大状态

news2024/11/15 12:03:47

 线程生命周期(七大状态)

  1. 新建状态(New):当Java线程被创建时,它处于新建状态。此时,线程对象已被创建,但尚未启动。在这个状态下,线程并没有开始执行任何代码,它只是一个普通的Java对象。

  2. 就绪状态(Ready):当Java线程被调度执行时,它会进入就绪状态。这意味着线程已经准备好开始执行,并等待操作系统分配CPU资源。在这个状态下,线程已经获得了所有需要执行的资源,但是还没有开始执行。

  3. 运行状态(Running):当Java线程获得了CPU资源并开始执行时,它会进入运行状态。在这个状态下,线程正在执行它的run()方法中的代码。只有在这个状态下,线程才真正开始执行代码。

  4. 阻塞状态(Blocked):当Java线程需要等待某些条件发生时,它会进入阻塞状态。例如,如果线程试图获取一个已经被其他线程锁住的锁,那么它将被阻塞直到锁被释放。在这个状态下,线程暂停了执行,并等待某些事件的发生。

  5. 等待状态(Waiting):当Java线程需要等待其他线程执行某些操作时,它会进入等待状态。在这个状态下,线程等待某些条件的发生,例如等待其他线程调用notify()或notifyAll()方法,或等待一定时间。线程可以通过调用Object.wait()或Thread.join()方法来进入等待状态。

  6. 超时等待状态(Timed Waiting):当Java线程需要等待一段时间后再返回时,它会进入超时等待状态。在这个状态下,线程等待一定的时间,或等待其他线程调用notify()或notifyAll()方法,或等待一定条件的发生。线程可以通过调用Thread.sleep()或Object.wait(long)方法来进入超时等待状态。

  7. 终止状态(Terminated):当Java线程执行完run()方法后,它会进入终止状态。在这个状态下,线程不再执行任何代码,并释放所有已经持有的资源。线程在这个状态下已经完成了它的使命,并且不能再次启动。

注意:Java线程中的Ready状态也被称为可运行状态(Runnable),它表示线程已经准备好开始执行,并等待操作系统分配CPU资源。在这个状态下,线程已经获得了所有需要执行的资源,但是还没有开始执行。

当线程处于Ready状态时,它已经被创建并分配到了系统资源,但是操作系统还没有开始执行线程。操作系统会根据调度算法来决定哪个线程会被分配到CPU资源,并进入Running状态。其他处于Ready状态的线程则继续等待分配CPU资源。

线程可以通过调用Thread.start()方法来进入Ready状态,这个方法会启动线程并将其加入到可执行线程池中。一旦线程进入Ready状态,它就已经准备好开始执行,并等待操作系统的调度。线程在Ready状态下等待的时间取决于操作系统的调度算法,一旦被分配到CPU资源,线程就会进入Running状态,并开始执行线程的run()方法。

Ready状态和Running状态可以被统称为Runnable状态。

线程状态转换图

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Java]监听器(Listener)

过滤器(Filter)https://blog.csdn.net/m0_71229255/article/details/130246404?spm1001.2014.3001.5501 一 : Listener监听器简述 监听器就是监听某个对象的的状态变化的组件 监听器的相关概念: 事件源: 被监听的对象 ----- 三…

Jenkins安装maven integration plugin以及jenkins安装allure插件失败的解决方法

这里写目录标题 一、Jenkins安装maven integration plugin失败解决方法(1)修改系统时间(2)查看当前操作系统时间(3)防止出错先执行命令(4)修改系统时间(5)写入…

Cocos Creator 源码解读:引擎启动与主循环

前言 本文基于 Cocos Creator 2.4.3 撰写。 Ready? 不知道你有没有想过,假如把游戏世界比作一辆汽车,那么这辆“汽车”是如何启动,又是如何持续运转的呢? 如题,本文的内容主要为 Cocos Creator 引擎的启动流程和主…

C# | 上位机开发新手指南(十一)压缩算法

上位机开发新手指南(十一)压缩算法 文章目录 上位机开发新手指南(十一)压缩算法前言压缩算法的分类从数据来源角度分类流式压缩块压缩 从是否需要建立字典角度分类字典压缩无字典压缩 流式压缩与块压缩流式压缩的优势与劣势优势劣…

各种开源协议介绍

世界上的开源许可证(Open Source License)大概有上百种,今天我们来介绍下几种我们常见的开源协议。大致有GPL、BSD、MIT、Mozilla、Apache和LGPL等。 Apache License Apache License(Apache许可证),是Apac…

O2OA (翱途) 平台 V8.0 即将亮相

亲爱的小伙伴们,O2OA (翱途) 平台开发团队经过几个月的持续努力,实现功能的新增、优化以及问题的修复。2023 年度 V8.0 版本将于近期正式发布。届时我们将会用文档或者视频的方式详细来介绍新增的功能和优化的亮点,欢迎大家一起来体验&#x…

在Vue中将单独一张图片设为背景图并充满整个屏幕

将单独一张图片设为背景图并充满整个屏幕 代码如下(在主div中添加样式) background: url("../xx/images/图片名字.jpg");//这里的地址是用你项目中图片所在的路径为准background-repeat: no-repeat;//将图片样式不重复background-size: 100% 100%; //设置图片大小po…

YOLOv8 更换主干网络之 PP-LCNet

《PP-LCNet: A Lightweight CPU Convlutional Neural Network》 论文地址:https://arxiv.org/abs/2109.15099 代码地址:https://github.com/ngnquan/PP-LCNet 我们提出了一种基于MKLDNN加速策略的轻量级CPU网络,名为PP LCNet,它提高了轻量级模型在多个任务上的性能。本文列…

13、DRF实战总结:重写DRF的to_representation和to_internal_value方法的作用详解(附源码)

DRF的to_representation和to_internal_value是序列化和反序列化过程中最核心的方法,它们分别用于将数据对象转换成字典,和将字典转换成数据对象。 DRF所有序列化器类都继承了BaseSerializer类,通过重写该类的to_representation()和to_intern…

Python ---->> PiP 的重要性

我的个人博客主页:如果’真能转义1️⃣说1️⃣的博客主页 关于Python基本语法学习---->可以参考我的这篇博客:《我在VScode学Python》 Python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的语…

linux安装oracle

我系统为centos7,最小化安装的,需调用xshell图行化界面安装oracle** 前提准备 1、安装Xmanager,配置x11转发。 2、oracle下载地址 https://download.oracle.com 3、关闭selinux 临时关闭: setenforce 0 永久关闭 vim /et…

Servlet 和 Servlet API 简述

目录 1、什么是 Servlet? 2、Servlet API 有哪些内容? 3、Servlet 与 Tomcat 的区别和联系 4、常用的Web服务器有哪些? 5、拓展:Undertow 和Tomcat 的区别 1、什么是 Servlet? Servlet 是 Java Web 应用程序中的一…

使用 node 管理器管理 monorepo

使用 node 管理器管理 monorepo 不包含工具的使用,一方面因为我没用到过工具,另外一方面看了一下 Lerna,说 Learna 底层还是用到了 yarn 去进行管理,二者并不冲突,所以打算先学习一下基础再说。 顾名思义&#xff0c…

800V高压系统的驱动力和系统架构分析——为什么是800V高压系统,及其挑战?

摘要: 800V高压系统下汽车系统架构会出现哪些变化? 过去一年是新能源汽车市场爆发的一年,据中汽协数据,2021年新能源汽车销售352万辆,同比大幅增长157.5%。新能源汽车技术发展迅速,畅销车辆在动力性能、智…

IS210AEBIH3BED包含逻辑集成电路、存储器集成电路、专用集成电路

IS210AEBIH3BED包含逻辑集成电路、存储器集成电路、专用集成电路 什么是集成电路测试仪   集成电路测试仪是对集成电路进行测试的专用仪器设备。集成电路测试是保证集成电路性能、质量的关键手段之一。集成电路测试技术是发展集成电路产业的三大支撑技术之一,因此…

ELK部署

ELK部署 1. 整体部署规划1.1 服务器规划1.2 关闭防火墙,同步时间 2. ElasticSearch集群部署2.1 环境准备2.2 部署 Elasticsearch 软件 3. ELK Logstash 部署3.1 安装Logstash,httpd,java3.2 测试 Logstash与elasticsearch功能是否能做对接3.3 定义 logstash配置文件…

ES-IK分词器的概念和基本使用

文章目录 一、ES-IK分词器1.1 初识ES-IK分词器1.2 IK分词器-拓展和停用1.3 索引库1.3.1 mapping属性1.3.2 索引库的CRUD基本语法: 1.3.3 文档的DSL 一、ES-IK分词器 1.1 初识ES-IK分词器 ES IK分词器是一种基于中文文本的分词器,它是Elasticsearch中文分…

DJ4-4 网际协议:因特网中的转发和编址

目录 一、因特网中的网络层协议 二、IP 数据报格式(IPv4) 三、IP数据报分片和重组 1. 分片的概述 2. 分片的例子 四、IP 地址 1. IP 地址概述 2. IPv4 编址 3. IP 地址结构 4. 传统的 IP 地址分类 5. ABC 类地址 6. 特殊 IP 地址段 7. 特殊…

Mysql 截取字符串并将文本转换为数值

有一个需求, 需要在 字符串 20230410 中获取 月份(04), 然后变为 (4), 解决: SELECT cast(left(SUBSTRING(20230410, 5),2) as SIGNED); 用到的函数有 left(str, length) substring(str, pos),即:substring(被截取字符串, 从第几位开始截…

Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

为了方便驱动开发学习,了解一下在Ubuntu上进行驱动编译的流程。 一、下载对应的内核源码 首先要通过 uname -a查询一下自己的内核版本。 我这里下载的是 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz 二、编译内核 (1&a…