当前位置: 首页 > 面试题库 >

Java线程何时存活?

凌志学
2023-03-14
问题内容

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

我看不到任何可能的重复项,但可能存在。

Oracle文档中“
活着
”一词指的是什么?

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


问题答案:

根据您提到的Javadoc:

如果线程已经启动但尚未死亡,则该线程是活动的。

线程在start()调用其方法时“启动”,并在其方法结束时“死亡”
run(),或在stop()调用时(现在已弃用)。因此,是的,当线程的run()方法仍在进行中时,该线程为“活动” ,但在JVM
调用start()与隐式调用该run()方法之间的时间窗口中,该线程也为“活动” 。

您还可以检查Thread.getState()和有关线程有趣的信息,美国建议由@Marou
Maroun。

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

编辑:如@zakkak所建议,即使该run()方法尚未启动,也可以将线程视为活动线程。如果您希望对何时调用它进行适当的控制,请使用ScheduledExecutorService,特别是schedule()为您提供更精确的执行计划的方法。



 类似资料:
  • 问题内容: 线程1:正在执行此循环 线程2将运行错误设置为假如果运行是易失性变量,则线程1退出循环并显示“完成”。 我的问题是,如果运行不是易失的,那么Thread1何时从主内存中读取运行变量? 注意:我很了解同步和volatile变量之间的关系,但是即使运行不是volatile或同步的,线程1也会停止。所以我的问题是,鉴于没有同步或没有波动,线程1什么时候决定从主存储器读取数据 问题答案: 这在

  • 问题内容: 想在一个固定的时间内运行一个线程。如果未在该时间内完成,我想杀死它,抛出一些异常或以某种方式处理它。怎么做到呢? 我从该线程 了解到的一种方法是在该线程的run()方法内使用TimerTask。 有没有更好的解决方案呢? 编辑:添加赏金,因为我需要一个更明确的答案。下面给出的ExecutorService代码无法解决我的问题。为什么在执行完某些代码后就进入sleep()-我无法处理这段

  • 问题内容: 除了堆转储(java_pid14941.hprof),Java 6还会生成线程转储吗? 这就是我的一个应用程序发生的事情。 java.lang.OutOfMemoryError:超出了GC开销限制将堆倾倒到java_pid14941.hprof … 我确实在工作目录中找到了ava_pid14941.hprof,但没有找到任何包含线程转储的文件。当我收到此OutOfMemory错误时,我

  • 问题内容: 我读了这句话: 主线程必须是完成执行的最后一个线程。当主线程停止时,程序终止。 是真的吗 我也知道“即使主线程死程序继续运行”。 据我了解:启动程序时,JVM创建一个线程来运行您的程序。JVM创建一个用于运行程序的用户线程。该线程称为主线程。该类的main方法是从主线程调用的。如果程序从主线程中产生新线程,它将停止直到最后一个线程死亡。 哪一个是对的? 问题答案: 当所有非守护程序线程

  • 以下是上述应用程序的代码(包括2个类:Main和ClockPanel) 问题是:如果我删除该行(正如我在上面的代码中所评论的那样),时钟将不会运行。我完全不知道为什么会这样。有人能给我解释一下吗?是因为系统。出来println()影响正在运行的线程或其他什么?

  • 问题内容: 我正在阅读以下链接 http://java-latte.blogspot.in/2013/10/cyclicbarrier- in-java-concurrency.html 。 在示例1中,主要方法CyclicBarrier被重用,而没有调用 reset 方法。 我运行了示例,它运行良好。因此,我想知道方法的用途是什么。什么时候应该叫它?还是我们完全需要调用它? 问题答案: A 是循