JAVA:线程的状态与生命周期

java中的任何对象都有一个生命周期,线程也有它的生命周期。

在线程的整个生命周期中,线程可能会处于不同的运行状态;在线程的整个生命周期中一共有以下几种状态:New(新建状态)、Runnable(可运行状态)、Blocked(锁阻塞)、Waiting(无限等待)、Timed_Waiting(计时等待状态)、Teminated(被终止)

新建状态

在创建线程对象后,还未调用 start() 方法,此时这个线程对象就处于新建状态,这时只是由JVM为其分配了内存,还没表现出任何动态的特征

可运行状态

当线程调用了 start() 方法后,线程就处于就绪状态,可运行状态也可称为就绪状态;处于就绪状态的线程位于线程队列中,此时具备了可运行的状态,还需要等系统的调度才能在CPU上运行。

锁阻塞

线程在到可运行状态后并且获取CPU的使用权后,线程尝试获取一个锁对象,但这个锁对象被其他线程占用,此时就会处于锁阻塞的状态,线程获取到锁对象后,该线程又会变成可运行状态

无限等待

线程一直等其他线程唤醒它或者中断它,线程进入到这个状态后不能自动唤醒

计时等待

线程可设置一个时间,表示该线程最多等到什么时候,这种状态一直保持到超时或者被其他线程唤醒

被终止状态

线程终止运行的状态;表示线程运行完毕或者因为没有捕获异常终止了run() 方法而结束执行

线程状态的转换如下图:

相关推荐
WWJA王文举几秒前
FreeRTOS事件组和任务通知详解:为什么任务通知比队列更轻量?
开发语言·php
珍珠先生4 分钟前
第10章 JDK 17 新特性:语法糖与新能力
java
wuyk5551 小时前
12.归并排序:分治思想的稳定排序算法
开发语言·数据结构·算法·排序算法
吴声子夜歌1 小时前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
Haooog1 小时前
Agent 开发中的 Memory:State、短期记忆、长期记忆与 Memory Retrieval
java·agent·memory
砚底藏山河1 小时前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
抠脚小弟2 小时前
Spring Cache 使用详解:从入门到实战
java·spring
ZGG0032 小时前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql
quantdash_cc2 小时前
量化数据源怎么选:稳定性、实时性和数据完整性到底该如何权衡?
开发语言·python·数据分析·量化交易·股票数据·quantdash
萧瑟余晖2 小时前
Java深入解析篇五十四之对象模型详解
java·开发语言