繁体   English   中英

Java 线程何时处于活动状态?

[英]When is a Java thread alive?

这是一个关于 Java 线程词汇的非常基本的问题。

我看不到任何可能的重复,但可能有。

在 Oracles 文档中, alive这个词指的是什么?

是在run()方法尚未完成时还是任何其他参数?

根据您提到的Javadoc:

如果线程已启动且尚未死亡,则该线程处于活动状态。

线程在其start()方法被调用时“启动”并在其run()方法结束时“死亡”,或者当stop() (现已弃用)被调用时。 所以,是的,当它的run()方法仍在run()时,一个线程是“活跃的”,但它在start()的调用和 JVM 对run()方法的隐式调用之间的时间窗口中也是“活跃的” .

您还可以查看Thread.getState()以及@Marou Maroun 建议的有关线程状态的有趣信息

我也在遵循他的建议,警告您 Thread 可能会过早结束,以防引发超出run传播的异常。 在这种情况下,线程将不再存在。

编辑:正如@zakkak 所建议的那样,即使run()方法尚未启动,也可以认为该线程处于活动状态。 如果您想适当控制何时调用它,请使用ScheduledExecutorService ,特别是schedule()方法,它可以为您提供更精确的执行计划。

线程在 start() 返回后一直处于活动状态,直到 run() 返回到 JVM。

当线程处于新/运行/等待状态时,它是活动的。 本质上run方法可以运行也可以不运行

当调用start方法时,线程处于活动状态并且在它死之前。 它可以在死亡之前多次进入等待状态,即使它处于等待状态它仍然活着。

从活着到死去,它可以从runnable状态转变为waiting状态。

从您创建 Thread 对象并启动它的那一刻起,直到它完成 run 方法或死亡,线程被认为是活动的。 即使它处于空闲、运行或睡眠状态,也会说它处于活动状态。

Thread is "Alive" 表示 Thread 仍在运行。

是的,您可以说run()方法正在为 Alive Thread 执行。

此外, isAlive() 方法用于了解 Thread 是否仍在运行。

final boolean isAlive()

如果调用isAlive()方法的线程仍在运行,则返回 true。 否则返回 false。

一个线程在 New State 或 Running/Wait State 时是存活的。我们也可以知道,直到线程死亡,它在内存中都是存活的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM