这是一个关于 Java 线程词汇的非常基本的问题。
我看不到任何可能的重复项,但可能有。
在 Oracles 文档中活着这个词指的是什么?
是该run()
方法尚未完成还是任何其他参数?
根据您提到的Javadoc:
如果线程已启动且尚未死亡,则该线程处于活动状态。
一个线程在其方法被调用时“启动”,在其start()
方法结束时“死亡” run()
,或者在stop()
(现在已弃用)被调用时。所以是的,一个线程在其run()
方法仍在进行时是“活动的”,但在 JVM调用start()
和隐式调用该方法之间的时间窗口中它也是“活动的”。run()
您还可以查看@Marou Maroun 建议的有关线程状态的有趣信息Thread.getState()
。
我也遵循他的建议警告您,如果抛出传播超出的异常,线程可能会过早结束run
。在那种情况下,线程将不再存在。
编辑:正如@zakkak 所建议的,即使该run()
方法尚未开始,线程也可以被认为是活动的。如果您想正确控制何时调用它,请使用ScheduledExecutorService
,特别是schedule()
为您提供更精确的执行计划的方法。
线程在 start() 返回后一直处于活动状态,直到 run() 返回 JVM。
当线程处于新/运行/等待状态时,它是活动的。本质上,run 方法可以运行也可以不运行
一个线程在其start
上调用该方法时并且在它死之前是活动的。它可以在死亡之前多次进入等待状态,即使它处于等待状态它仍然活着。
从活着到死去,它可以从runnable
一个状态转移到另一个waiting
状态。
从您创建 Thread 对象并启动它直到它完成 run 方法或死亡的那一刻起,线程就被认为是活着的。即使它处于空闲、运行或睡眠状态,也会说它处于活动状态。
Thread is "Alive" 意味着 Thread 仍在运行。
是的,您可以说该run()
方法正在为活动线程执行。
此外,isAlive() 方法用于了解 Thread 是否仍在运行。
final boolean isAlive()
isAlive()
如果调用它的线程仍在运行,则该方法返回 true。否则返回 false。
当线程处于新状态或运行/等待状态时,它是活动的。我们还可以知道,在线程死亡之前,它在内存中是活动的。