Java线程何时处于活动状态



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

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

Oracle文档中的单词"活着"指的是什么?

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

根据您提到的Javadoc:

如果线程已启动但尚未终止,则它是活动的。

当调用其start()方法时,线程"启动",并在run()方法结束时,或当调用stop()(现在已弃用)时"终止"。因此,是的,当一个线程的run()方法仍在进行时,它是"活动的",但在JVM调用start()和隐式调用run()方法之间的时间窗口中,它也是"活跃的"。

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

我也遵循他的建议,警告您,如果抛出传播到run之外的异常,线程可能会提前结束。在这种情况下,线程将不再存在。

编辑:正如@zakkak所建议的,即使run()方法还没有启动,线程也可以被认为是活动的。如果您想正确控制何时调用它,请使用ScheduledExecutorService,特别是schedule()方法,它可以为您提供更精确的执行时间表。

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

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

start方法被调用时,线程是活动的,在它死之前。它可以在死之前多次移动到等待状态,即使它处于等待状态,它仍然活着。

从活着到死,它可以从runnable状态移动到waiting状态。

Thread为"活动"表示Thread仍在运行。

是的,您可以说run()方法正在为活动线程执行。

此外,isAlive()方法用于确定线程是否仍在运行。

final boolean isAlive()

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

当线程处于"新状态"或"运行/等待状态"时,它是活动的。我们还可以判断,在线程死亡之前,它在内存中是活动的。

从创建thread对象并启动它的那一刻起,线程就被认为是活动的,直到它完成run方法或终止。即使它处于空闲、运行或睡眠状态,它也将被称为处于活动状态。

最新更新