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

2022-09-01 18:59:10

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

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

“活着”这个词在Oracles文档中指的是什么?

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


答案 1

根据你提到的Javadoc:

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

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

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

我也遵循他的建议,警告您,如果抛出传播超出的异常,线程可能会过早结束。在这种情况下,线程将不再处于活动状态。run

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


答案 2

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