如果JVM崩溃,线程是否仍然存在?

时间:2011-09-19 21:59:48

标签: java multithreading jvm

在接受采访时我被问到这个问题,有人知道吗?

5 个答案:

答案 0 :(得分:6)

如果JVM因崩溃而退出,则线程将不再存在。如果崩溃是某种内存不足或类似错误,则根据具体情况可能存在也可能不存在。

答案 1 :(得分:6)

如果线程正在运行,则JVM没有崩溃。

但是,有时人们会错误地描述任何因崩溃而抛出的异常。如果这是面试官的意思,我会说线程仍在运行,因为异常被抓住而不是重新抛出。

答案 2 :(得分:4)

如果关闭包含JVM的进程,则其所有线程也将关闭。当操作系统清理分配给给定进程的所有内存时,就会在操作系统级别处理这个问题。

我提到了进程级闭包,以区别于JVM可能发生的其他奇怪的未知状态,使其保持运行状态,但处于未知状态(例如,它可能实际上没有做任何事情)。

同样,如果你终止进程,所有子线程都会关闭,无论它们的类型如何(守护进程/非守护进程)。

答案 3 :(得分:3)

想象一下你是JVM。你走到路边,没有真正看你要去的地方,你发生了致命的事故。在不幸发生之前的瞬间,你有30件事情在想。想象一下你心中的那些东西是“线程”

当你被赶出公路时,你认为你仍然会有意识并且想到所有这些事情吗?

答案 4 :(得分:0)

JVM的执行实例是一个过程。

线程是流程的一部分。

如果这个过程已经死了,那么它所属的一切都已经死了。

因此,当您的JVM崩溃或被强制终止时,它创建的所有线程也会停止执行。

此外,当JVM中运行的唯一线程是守护程序线程时,JVM会自动终止。