Java线程状态转换

news2024/11/27 21:46:12

从java层面,线程状态分为六种,分别是New、Blocked、Waiting、Timed_Waiting、Terminated和Runnable

在这里插入图片描述
New:初始状态,线程刚刚创建还未调用start方法,线程还没有和操作系统的线程关联起来

New->Runnable(箭头1):运行状态,调用了start方法,java线程和操作系统现场进行了关联

Runnable<–>waiting(箭头2)):t线程synchronized(obj)获取对象锁后

  1. 调用obj.wait()方法时,t现场从Runnable–>waiting
  2. 调用obj.notify(),obj.notifyAll(),t.interrupt()时
    • 竞争锁成功,t线程从waiting --> Runnable
    • 竞争锁失败:t线程从waiting --> Blocked

Runnable<–>waiting(箭头3):当线程调用t.join()方法,当前线程从Runnable转移到waiting状态(注意是当亲啊现场在t线程对象的管程上进行等待,它底层也是wait-notify机制)

Runnable<–>waiting(箭头4):当线程调用LockSupport.park()方法会让当前线程从Runnable–>waiting状态,调用unpark方法或调用了线程的interrupt(),会让目标线程从waiting–>runnbale

Runnable<–>Timed_waiting(箭头5):t线程用synchronized(obj)获取对象锁后,调用obj.wait(long n)方法,t线程从Runnable到timed_waiting状态。如果t线程等待时间超过n毫秒,或调用obj.notify(),obj.notifyAll(),t.interruptI()时,当竞争锁成功,t现场充timed_waiting状态回到Runnable,否则从timed_waiting状态转移到Blocked。

Runnable<–>Timed_waiting(箭头6):当线程调用t.join(long n)方法时,当前线程从Runnable转移到Timed_waiting状态(注意是当前线程在t线程对象的管程上的等待),当前线程等待时间超过n毫秒,或t线程运行结束,或调用了当前线程的interrupt()时,当前线程从Time_waiting状态转移到Runnable状态。

Runnable<–>Timed_waiting(箭头7):当前现场调用Thread.sleep(long n),当前线程从Runnable转移到Timed_waiting,当前线程等待时间超过n毫秒,当前线程从Timed_Waiting转移到Runnable状态。

Runnable<–>Timed_waiting(箭头8):当前线程调用LockSupport.parkNanos(Long nanos)或LockSupport.parkUntill(long mills)时,当亲啊线程从Runnable转移到Timed_waiting状态,当调用unpark方法或调用线程的interrupt方法时,或者是等待超时时,会让目标线程从timed_waiting状态转移到Runnable状态。

Runnable<–>BLOCKED(箭头9):t线程用synchronized(obj)获取了对象锁时如果竞争失败,从Runnable转换为Blocked状态。持obj锁线程的同步代码块执行完毕,会唤醒该对象上的所有Blocked的线程重新竞争,如果t1线程竞争成功,从Blocked转换为Runnable状态,其它失败的线程仍然Blocked

**Runnable–> Terminated:**当前线程所有代码运行完毕,进入Terminated状态

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

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

相关文章

IP代理识别API:预防欺诈和保护网络安全的必要工具

引言 随着互联网的快速发展&#xff0c;我们的生活变得越来越依赖于网络。然而&#xff0c;随着网络的发展&#xff0c;网络犯罪和网络欺诈也在不断增加。为了保护自己的网站和客户免受网络欺诈的侵害&#xff0c;许多企业和组织开始使用IP代理识别API作为一种必要工具。 什么…

ChatGPT和API发生重大中断!

11月9日凌晨&#xff0c;OpenAI在官网发布&#xff0c;ChatGPT和API发生重大中断&#xff0c;导致全球所有用户无法正常使用&#xff0c;宕机时间超过2小时。 目前&#xff0c;OpenAI已经找到问题所在并进行了修复&#xff0c;但仍然不稳定&#xff0c;会继续进行安全监控。 …

Python 中的 re.sub 如何使用?各参数都是什么意思?有什么要注意的?怎么在线验证正则?

讲解之前&#xff0c;我们先来看一下该方法的官方注释&#xff1a; 翻译过来的意思大概是&#xff1a; “返回通过将字符串中最左边、不重叠的模式出现替换为替代字符串 repl 后获得的字符串。repl 可以是一个字符串或一个可调用对象&#xff1b;如果是一个字符串&#xff0c…

蓝桥杯每日一题2023.11.9

包子凑数 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于此题是一个简单DP的翻版问题&#xff0c;若能凑出当前的包子数&#xff0c;则凑出之前一定为dp[i - a[j]]&#xff0c;若表示出的dp[i]不是0则说明是一定存在数可以被凑出的&#xff0c;由题意&#xff1a;若凑不出的…

在Three.js中动画 简单案例

在Three.js中&#xff0c;动画是指在场景中创建和控制对象的运动和变化。模型是指通过Three.js加载的3D对象&#xff0c;可以是几何体、网格或复杂的模型文件&#xff08;如.obj或.gltf&#xff09;。动画可以存在于模型中&#xff0c;也可以单独定义。 编辑关键帧&#xff1a;…

OV2210 小封装过压/过流保护芯片 适用于小电流的便携产品

OV2210 是一款过压过流保护芯片&#xff0c;芯片内置高耐压保护 MOSFET &#xff0c;最高耐压达 30V &#xff0c;芯 片过压保护电压固定为 6.2V &#xff0c;过流保护固定为 1.5A &#xff0c;芯片会持续检测输入电压和电流&#xff0c;一旦发生过压和过流&#xff0c;立…

Geotrust证书

GeoTrust是著名的证书颁发机构DigiCert的品牌。GeoTrustSSL产品在Internet上提供从基本域名验证到扩展验证SSL标准支持的最高级验证的安全性。 GeoTrust OV&#xff08;组织验证&#xff09;证书验证域所有权和组织的存在。在颁发证书之前&#xff0c;会检查该组织在公共数据库…

【C语言学习】22 -文件管理

文章目录 1 remove()1.1 函数原型1.2 参数1.3 返回值1.4 示例 1 remove() 1.1 函数原型 remove()&#xff1a;删除文件&#xff0c;函数原型如下&#xff1a; int remove(const char *filename);1.2 参数 remove()函数只有一个参数filename&#xff1a; 参数filename是一个…

软件测试突破技术瓶颈之python接口自动化- DDT数据驱动测试

简单介绍 ​ DDT&#xff08;Date Driver Test&#xff09;&#xff0c;所谓数据驱动测试&#xff0c;简单来说就是由数据的改变从而驱动自动化测试的执行&#xff0c;最终引起测试结果的改变。通过使用数据驱动测试的方法&#xff0c;可以在需要验证多组数据测试场景中&#x…

手机也能搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

【Python3】【力扣题】242. 有效的字母异位词

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;若字符串长度相同&#xff0c;依次遍历元素&#xff0c;比较两个字符串的该元素个数是否相同。【耗时长】 知识点&#xff1a;len(...)&#xff1a;获取序列&#xff08;字符串、列表等&…

Mysql 不同存储引擎数据文件的形式详解

目录 MyISAM MERGE InnoDB Memory Archive CSV BLACKHOLE MySQL 中的每一个数据表在磁盘上至少被表示为一个文件&#xff0c;即存放着该数据表结构定义的 .frm 文件。不同的存储引擎还有其它用来存放数据和索引信息的文件。 从 MySQL 8.0 版本开始&#xff0c;frm 表结构…

Python进行多线程爬取数据通用模板

首先&#xff0c;我们需要导入所需的库&#xff0c;包括requests和BeautifulSoup。requests库用于发送HTTP请求&#xff0c;BeautifulSoup库用于解析HTML文档。 import requests from bs4 import BeautifulSoup然后&#xff0c;我们需要定义一个函数来发送HTTP请求并返回响应。…

日常问题定位-网口不通

发现协商的Advertised link modes没有结果 自动协商不成功&#xff0c;手动协商无报错 可以通了

芯片洁净间的等级是如何划分的

芯片生产是一个非常精细且需要无尘的环境&#xff0c;这种环境通常被称为超净室或洁净室。洁净室是一个专门设计的封闭空间&#xff0c;其中空气中的颗粒物已被高度复杂的过滤系统限制或去除。通常&#xff0c;在大学的实验室中&#xff0c;我们最常接触的是百级间&#xff0c;…

教育照明灯具品牌,专业教育护眼台灯推荐

LED灯作为一种新型的照明产品&#xff0c;具有节能、环保、寿命长等优点&#xff0c;受到越来越多的人们的青睐。但是&#xff0c;市面上的LED灯品牌琳琅满目&#xff0c;让人眼花缭乱。那么&#xff0c;LED灯什么牌子好呢&#xff1f;下面我们来推荐五大品牌。 1.书客护眼台灯…

国内外常见PLC发展现状分析

在聊PLC的市场格局和国产发展现状之前&#xff0c;我们先来简单了解一下PLC的作用。所谓PLC&#xff0c;你可以把它当成是一台小型电脑&#xff0c;只不过这台电脑是专用于工业领域&#xff0c;用来控制各种机械或生产的过程。比如说我们身上穿的衣服&#xff0c;都是由机器缝制…

爱上C语言:操作符详解(上)

&#x1f680; 作者&#xff1a;阿辉不一般 &#x1f680; 你说呢&#xff1a;生活本来沉闷&#xff0c;但跑起来就有风 &#x1f680; 专栏&#xff1a;爱上C语言 &#x1f680;作图工具&#xff1a;draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话&#xff0c;还请…

Ubuntu22.04 下 NFS 相关问题与完整配置(客户机 MacOS)

categories: [Linux-Shell] tags: Linux NFS 写在前面 最近折腾一下 NFS, 先白嫖一顿华子云的 1 个月服务器, 2C4G 感觉不错了, 但NFS 配置起来还是有点难度, 主要还是随机分配的端口配置方面比较恶心. server环境: 华为云 2C4G Ubuntu22.04 client环境: MacOS M1 with brew …