网站首页 > 精选教程 正文
了解 Java 中的线程生命周期和线程状态在处理线程和多线程环境编程时非常重要。从我们上一个教程中,我们可以通过实现 Runnable 接口或扩展 Thread 类来创建 java 线程类,但要启动 java 线程,我们首先必须创建 Thread 对象并调用它的 start()方法来执行 run()方法作为线程。
Java 中的线程生命周期
下图显示了 java 中线程生命周期的不同状态。我们可以在 java 中创建一个线程并启动它,但线程状态如何从 Runnable 更改为 Run 再到 Blocked 取决于线程调度程序的操作系统实现,而 java 对此没有完全控制权。
New
当我们使用 new 运算符创建新的 Thread 对象时,线程状态为 New Thread。此时,线程不是活动的,它是 Java 编程的内部状态。
Runnable
当我们在 Thread 对象上调用 start() 函数时,它的状态更改为 Runnable。控制权被授予线程调度程序以完成其执行。是立即运行此线程,还是在运行前将其保留在可运行的线程池中,取决于线程调度程序的操作系统实现。
Running
当线程正在执行时,它的状态将更改为正在运行。线程调度程序从可运行的线程池中选取一个线程,并将其状态更改为“正在运行”。然后 CPU 开始执行此线程。线程可以将状态更改为可运行、死亡或阻止运行状态取决于时间切片、run() 方法的线程完成或等待某些资源。
Blocked/Waiting
线程可以等待其他线程完成线程join,也可以等待某些资源可用。例如,生产者使用者问题或服务员通知程序实现或 IO 资源,则其状态更改为等待。线程等待状态结束后,其状态将更改为 Runnable,并移回可运行的线程池。
Dead
线程完成执行后,其状态将更改为 Dead,并被视为不活动。以上是线程的不同状态。
猜你喜欢
- 2024-11-18 Java并发编程线程状态转换
- 2024-11-18 Java面试必考问题:线程的生命周期
- 2024-11-18 Java 19 虚拟线程的状态变化,停驻与锁定
- 2024-11-18 Java线程生命周期详解?
- 2024-11-18 线程从创建最终消亡,要经历的若干状态,你了解其中的多少?
- 2024-11-18 java线程状态之WAITING(等待)
- 2024-11-18 浅谈Java线程:线程基础知识扫盲
- 2024-11-18 Java线程在各个状态下调用start方法会发生什么事情?
- 2024-11-18 为什么Java中线程没有Running状态
- 2024-11-18 阻塞模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?
你 发表评论:
欢迎- 04-26Java面试题Spring篇
- 04-262023年Java基础面试题目收集整理归纳(持续更新)
- 04-26Java 反射原理深度剖析:从困惑到精通
- 04-26月薪30k 的Java面试题,哭着也要背完!(附答案)
- 04-26java面试题整理《基础篇》六
- 04-26Java面试高频问答
- 04-26面试官最爱问的Java问题
- 04-26Java面试宝典 - 用一篇文章讲清楚 Java 的反射机制
- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)