在接受采访时我被问到这个问题,有人知道吗?
答案 0 :(得分:6)
如果JVM因崩溃而退出,则线程将不再存在。如果崩溃是某种内存不足或类似错误,则根据具体情况可能存在也可能不存在。
答案 1 :(得分:6)
如果线程正在运行,则JVM没有崩溃。
但是,有时人们会错误地描述任何因崩溃而抛出的异常。如果这是面试官的意思,我会说线程仍在运行,因为异常被抓住而不是重新抛出。
答案 2 :(得分:4)
如果关闭包含JVM的进程,则其所有线程也将关闭。当操作系统清理分配给给定进程的所有内存时,就会在操作系统级别处理这个问题。
我提到了进程级闭包,以区别于JVM可能发生的其他奇怪的未知状态,使其保持运行状态,但处于未知状态(例如,它可能实际上没有做任何事情)。
同样,如果你终止进程,所有子线程都会关闭,无论它们的类型如何(守护进程/非守护进程)。
答案 3 :(得分:3)
想象一下你是JVM。你走到路边,没有真正看你要去的地方,你发生了致命的事故。在不幸发生之前的瞬间,你有30件事情在想。想象一下你心中的那些东西是“线程”
当你被赶出公路时,你认为你仍然会有意识并且想到所有这些事情吗?
答案 4 :(得分:0)
JVM的执行实例是一个过程。
线程是流程的一部分。
如果这个过程已经死了,那么它所属的一切都已经死了。
因此,当您的JVM崩溃或被强制终止时,它创建的所有线程也会停止执行。
此外,当JVM中运行的唯一线程是守护程序线程时,JVM会自动终止。