0
点赞
收藏
分享

微信扫一扫

搜维尔科技:捕获、分析、优化,使用 Xsens Ergo 创建更安全的工作空间

吓死我了_1799 2024-03-10 阅读 12

🌟 欢迎来到 我的博客! 🌈

💡 探索未知, 分享知识 !💫


在这里插入图片描述


本文目录


🌟1. 引言

在Java中,线程对于同时执行单个进程中的多个任务至关重要。深入理解线程状态及其管理对于开发高效、可靠且并发的应用程序至关重要。本博客文章探讨了Java中线程的各种状态、它们的含义以及线程在这些状态之间转换的条件。


🌟2. Java线程的生命周期

💡2.1 新建(New)

当线程已经被创建但start()方法尚未被调用时,线程处于新建状态。此时,线程还没有活跃,不能运行任何代码。

💡2.2 可运行(Runnable)

一旦调用了线程的start()方法,它就转变为可运行状态。处于此状态的线程要么正在Java虚拟机(JVM)中执行,要么正在等待被线程调度器选中执行。它将一直保持此状态,直到被线程调度器选择执行。

💡2.3 阻塞(Blocked)

当线程等待获取一个锁以便进入或重新进入一个同步块/方法时,它进入阻塞状态。一旦它获取到锁,就会再次变为可运行状态。

💡2.4 等待(Waiting)

当线程因等待另一个线程执行特定动作而无限期等待时,进入等待状态。导致这种情况的动作包括没有超时的Object.wait()Thread.join()在另一个线程上。直到另一个线程在被等待的对象上调用notify()notifyAll(),才会变为可运行状态, 不然线程将会一直保持此状态。

💡2.5 计时等待(Timed Waiting)

计时等待状态类似于等待状态,但有指定的等待时间。线程由于调用Thread.sleep(long millis)Object.wait(long timeout)Thread.join(long millis)进入此状态。当等待时间到期或等待的事件发生时,线程将返回到可运行状态。

这个状态和等待差不多,但线程会设置个闹钟,就比如生活中“我等10分钟,如果还没轮到我,我就不等了”。

💡2.6 终止(Terminated)

当线程已完成其执行或已被强制终止时,它处于终止状态。这是线程生命周期中的最终阶段。

🌟3. 状态转换

这些状态之间的转换由特定条件或动作控制:

🌟4. 图解

图片摘自https://blog.csdn.net/sspudding/article/details/89220595
图片摘自https://blog.csdn.net/sspudding/article/details/89220595

举报

相关推荐

0 条评论