并发:线程状态

news2025/1/22 20:49:27

java的线程状态分为六种

 

  • 新建 NEW

    • 当一个线程对象被创建,但是还没有调用start方法时处于新建状态

    • 此时未与操作系统底层线程关联

  • 可运行 RUNNABLE

    • 调用了start方法,就会由新建进入可运行状态

    • 此时与底层线程关联,由操作系统调度执行

    • (可以细分为准备和运行)准备就是进入了可以得到cpu,但是还没有得到cpu时间片

    • 运行就是得到cpu时间片正在执行代码

  • 终结 TERMINATED

    • 线程内代码执行完毕,由可运行进入终结

    • 此时会取消与底层线程关联

  • 阻塞 BLOCKED

    • 当获取锁失败后,由可运行状态进入阻塞,此时不占用cpu时间

    • 当锁释放后,会按照一定规则唤醒阻塞队列中阻塞的多个线程,重新获取锁

    • 得到锁的线程进入可运行状态, 没有得到锁的进入阻塞状态

  • 等待 WAITING

    • 当获取锁成功后,由于条件不满足,调用Object对象的wait()方法,释放锁,此时从可运行状态进入到等待状态,同样不扎弄cpu时间

    • 当其他锁线程调用notify()或notifyAll()方法,会按照一定规则唤醒等待集合中党的线程,然后获取锁,

    • 如果没有获取到就进入阻塞状态,如果获取到锁就进入可运行状态

  • 有时限等待 TIME_WAITING

    • 当获取锁成功后,但由于条件不满足,调用wait(long) 方法,此时从可运行状态释放锁进入 有时限等待状态,同样不占用cpu

    • 当其他持有锁的线程调用当其他锁线程调用notify()或notifyAll()方法,会按照一定规则唤醒等待集合中的线程,然后获取锁,如果没有获取到就进入阻塞状态,如果获取到锁就进入可运行状态

    • 如果等待超时,也会从有时限的等待状态到可运行状态,重新去竞争锁

    • 还有一种情况是,调用线程的sleep(long) 方法也会从可运行状态进入有时限等待状态,这个时候没有释放锁,不需要主动唤醒,超过时间自动恢复为可运行状态

五种状态的说法来自于操作系统层面的划分

 

  • 运行态:分到 cpu 时间,能真正执行线程内代码的

  • 就绪态:有资格分到 cpu 时间,但还未轮到它的

  • 阻塞态:没资格分到 cpu 时间的

  • 涵盖了 java 状态中提到的阻塞、等待、有时限等待

  • 多出了阻塞 I/O(java中阻塞I/O是在可运行状态中包含),指线程在调用阻塞 I/O 时,实际干活由 I/O 设备完成,此时线程无事可做,只能干等

  • 新建与终结态:与 java 中同名状态类似

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

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

相关文章

python就是学不会怎么办?

编程从来都不是只看,只照葫芦画瓢就能学会的学科要想学会,必须是要有你个人是思考的,学会掌握编程逻辑,在学的过程中想为什么这么写,应该怎么去实现这个功能,拆分为几步不断的实操练习才能让你真的掌握知识…

并发,并行,串行,同步,异步,进程,进程池,线程,线程池

并发,并行,串行,同步,异步,进程,进程池,线程,线程池 进程 什么是进程: 开发写的代码称之为程序,将程序运行起来,就是进程 进程是申请一块内存空…

vue中动态引入图片为什么要是require, 你不知道的那些事

相信用过vue的小伙伴,肯定被面试官问过这样一个问题:在vue中动态的引入图片为什么要使用require 有些小伙伴,可能会轻蔑一笑:呵,就这,因为动态添加src被当做静态资源处理了,没有进行编译,所以要加上require, 我倒着都能背出来… emmm… 乍一看好像说的很有道理啊,但…

Linux实现文件定期本地备份/异地备份/删除备份的脚本

一.背景 1.总会出出现环境上的数据丢失,在没有备份的情况下会非常的被动,不管是由于病毒还是人为的原因造成的程序、数据被删除,有时候后悔已经来不及,不如提前做到数据的备份,而异地备份也更加的保险一点。 2.数据备…

【Servlet】1:踏入JavaWeb的第一把钥匙

目录 第一章 | JavaWeb序章 | 章节概述 | JavaWeb项目运行流程 | 静态与动态资源 | Javaweb开发人员的三个任务 第二章 | HTTP网络协议 | 章节概述 | HTTP简介 | HTTP请求三要素 | HTTP请求包、响应包 | HTTP状态码 | HTTPS vs HTTP 本文章属于后端全套笔记的第三部…

Jenkins 如何 使用企业权限 登录

实现方式 基于Jenkins的 “CAS Plugin” 和 “Role-based Authorization Strategy”插件实现 CAS Plugin: 该插件支持使用CAS作为身份验证源,以支持单点登录(SSO)。一般的,企业都会有 这么一个服务,提供企业 统一身份管理,比如 百…

【GlobalMapper精品教程】026:影像黑边白边出现的原因及解决办法汇总

本文讲解Globalmapper中,影像黑边白边出现的原因及解决办法汇总。 文章目录 1. 影像黑边白边出现的原因2. 影像黑边白边的解决方法1. 影像黑边白边出现的原因 通常,由于影像格式、像素深度、无效值、背景值等原因,会产生黑边或者白边,给影像的拼接或者裁剪带来困扰。 2. …

基于ERP集成的流程制造管理系统

ERP的含义是企业资源计划,含义是对企业所拥有各种资源进行综合规划和优化管理,用以降低成本,提高效率,增加利润。ERP最初是在90年代初提出的,那时的ERP概念,还只是根据计算机技术的发展和供需链管理,推论各…

什么是GEMM?该怎么去学习GEMM?

什么是GEMM? 它的英文全称是 GEneral Matrix to Matrix Multiplication (通用矩阵的矩阵乘法),Gemm在神经网络的计算中占据很重要的位置。 它代表全局矩阵到矩阵的乘法,它本质上完全按照它在tins上所说的那样,将两个输入矩阵乘法在…

批量替换网站程序中的gotoip域名

网站访问出现验证页面,这是因为网站调用了二级域名,西部数码二级域名用于测试访问效果,不能用于正式访问,但是有些用户网站调试安装时使用了二级域名,内部链接没有修改,所以访问调用出现了验证页面。 这时要检查网站后…

DBCO(二苯并环辛炔)DBCO-PEG16-Benzylamine特点分享

【产品描述】 DBCO-PEG16-Benzylamine固体状,长链小分子PEG点击试剂,DBCO(二苯并环辛炔)是一种环炔烃,可以通过在水溶液中通过应变促进的1,3-偶极环加成反应与叠氮化物反应,这种生物正交反应也称为无铜点击…

前端、vue、Vue3弹幕实现;前端CSS实现弹幕

前端基于CSS3实现弹幕 基于CSS3动画 根据 Google Developer,渲染线程分为 主线程 (main thread) 和 合成线程 (compositor thread)。如果 CSS 动画只是改变 transforms 和 opacity,这时整个 CSS 动画得以在 合成线程 完成(而JS动画则会在 主…

PTA题目 最佳情侣身高差

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)1.09 (男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。 下面就请你写个…

HTTP Only限制XSS盗取cookie

今天继续给大家介绍渗透测试相关知识,本文主要内容是HTTP Only限制XSS盗取cookie。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对…

使用 Helm Cli 将 chart 推送到 Harbor

使用 Helm Cli 将 chart 推送到 Harbor 背景问题 努力寻找适用于特定版本的 Harbor 和 Helm 的文档。 我尝试添加我的仓库(repo) helm repo add harbor https://myharbor.mydomain.com/chartrepo/myproject --username myusername --password mypass…

NXP iMX8M Plus M7核心FreeRTOS开发

By Toradex胡珊逢 Toradex 的 Verdin iMX8M Plus 计算机模块采用 NXP 的 iMX8M Plus 处理器。该 CPU 除了有支持 AI 硬件加速单元的 NPU 外,还配置了一个 M7 微控制器。相比于 iMX 8 QuadMax 处理器上时钟频率为 266MHz 的M4 微控制器, 该M7 的时钟频率…

Java基础39 Object类(节选)

ObjectObject类一、 equals( )● 与 equals的对比(☆)二、hashCode( )三、toString( )四、finalize( )Object类 Object类:Java中lang包的类,是类层次结构的根类,每个类都使用Object作为超类。所有对象(包…

【2015NOIP普及组】T3:求和 试题解析

【15NOIP普及组】求和 时间限制: 1000 ms 内存限制: 131072 KB 【题目描述】 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n。每个格子上都染了一种颜色colori用[1,m]当中的一个整数表示),并且写了一个数字numberi。 定义一种特殊的三元组:(x,y,z),其中x,…

Java架构该如何进阶?还在东拼西凑的学习?这份进阶指南相信会对你有所帮助,十多位资深大佬独家秘籍一并传授!

如何成为一名架构师? 笔者认为,想成为一名架构师,首先第一点必然是你的技术足够优秀,知识的深度和广度足够,遇到问题能很快从脑海中寻找出最合适的解决之道。其次,架构师会从整体上领导项目,与人打交道必不可少,因此…

区块链baas平台告警方案

前言 在《24*7动态化监管为“链”站岗》中,我们介绍了区块链动态化监控中心,如果说监控的作用是防患于未然,那么告警则是当异常发生时第一时间触发运维人员的关键,可充分降低监控对象异常的时间,最大化降低因异常给区…