这是关于Java线程词汇的一个非常基本的问题。
我看不到任何可能的重复项,但可能存在。
Oracle文档中“ 活着 ”一词指的是什么?
是run()方法尚未完成时还是其他参数?
run()
根据您提到的Javadoc:
如果线程已经启动但尚未死亡,则该线程是活动的。
线程在start()调用其方法时“启动”,并在其方法结束时“死亡” run(),或在stop()调用时(现在已弃用)。因此,是的,当线程的run()方法仍在进行中时,该线程为“活动” ,但在JVM 调用start()与隐式调用该run()方法之间的时间窗口中,该线程也为“活动” 。
start()
stop()
您还可以检查Thread.getState()和有关线程有趣的信息,美国建议由@Marou Maroun。
Thread.getState()
我也遵循他的建议,警告您,如果抛出Exception并传播到以外,则Thread可能会提前结束run。在这种情况下,线程将不再存在。
run
编辑:如@zakkak所建议,即使该run()方法尚未启动,也可以将线程视为活动线程。如果您希望对何时调用它进行适当的控制,请使用ScheduledExecutorService,特别是schedule()为您提供更精确的执行计划的方法。
ScheduledExecutorService
schedule()