请详细描述一下线程从创建到死亡的几种状态都有哪些?
2023-09-14 09:01:57 时间
请详细描述一下线程从创建到死亡的几种状态都有哪些?
新建( new ):新创建了一个线程对象。
可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取 cpu 的使用权 。
运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。
阻塞( block ):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu 时间片timeslice ,暂时停止运行。直到线程进入可运行( runnable )状态,才有机会再次获得 cpu 时间片timeslice 转到运行( running )状态。阻塞的情况分三种: ①等待阻塞:运行( running )的线程执行 o . wait ()方法, JVM 会把该线程放入等待队列( waitting queue )中。 ②同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。 ③其他阻塞:运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。 当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。
死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。
相关文章
- 新增桥接连接状态监控、重构日志系统
- 多线程(二)-线程的状态
- 一个线程崩溃会引起整个进程崩溃_大量线程状态waiting
- java如何创建线程池_java线程池状态
- 谈谈你对Java线程5种状态流转原理的理解
- Java线程的状态分析
- Linux下shell脚本监控Tomcat的状态并实现自动启动详解程序员
- MySQL Status Innodb_buffer_pool_pages_total 数据库状态作用意思及如何正确
- MySQL Status Mysqlx_connections_rejected 数据库状态作用意思及如何正确
- 多线程状态及线程池管理详解编程语言
- 清理Linux 系统日志,精简优化运行状态(linux清理日志)
- Linux用户:当前登录状态报告(linux用户目前已登录)
- 情况Linux下查看Nginx进程状态:一招即通(linux查看nginx进程)
- 深入探究Linux线程运行状态(linux线程运行状态)
- 查看Redis运行状态快速准确的方法(查询redis运行状态)