什么时候Java线程活着?

时间:2013-06-25 09:08:40

标签: java multithreading

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

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

在Oracles文档中, alive 一词是指什么?

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

7 个答案:

答案 0 :(得分:27)

根据您提到的Javadoc:

  

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

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

您还可以查看@Marou Maroun建议的Thread.getState()interesting information about Thread States

我也遵循他的建议警告你,如果抛出的异常被传播超过run(),则Thread可能会提前结束。在那种情况下,线程将不再存在。

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

在调用start方法并且在它死之前,线程处于活动状态。它可以在它死之前移动到等待状态的次数,即使它处于等待状态它仍然存活。

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

线程是“活着”意味着线程仍在运行。

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

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

final boolean isAlive()

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

答案 6 :(得分:0)

当一个线程处于New State或Running / Wait State时,它处于活动状态。我们也可以告诉它,直到线程死亡,它在内存中存活。