答案 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时,它处于活动状态。我们也可以告诉它,直到线程死亡,它在内存中存活。