2011-09-19 50 views

回答

6

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

6

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

但是,有时候人们错误地描述了任何抛出异常的情况。如果这是面试官的意思,我会说线程仍在运行,因为异常被捕获并且没有被重新抛出。

4

如果包含JVM的进程已关闭,则其所有线程也会关闭。当OS清理分配给给定进程的所有内存时,这将在操作系统级别处理。我提到进程级别的闭包,以区别JVM可能发生的其他奇怪的,未知的状态,让它运行,但处于未知状态(例如,它可能实际上并没有做任何事情)。

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

3

想象一下,你是JVM。你走出去的路上,并没有真正看到你要去哪里,你有一个致命的事故。在不幸发生之前的一瞬间,你脑海中有30件事。想象一下,你脑海里的那些东西是“线索”

当你在路上被冲上岸时,你是否认为你仍然会意识到并将所有这些东西放在心上?

0

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

线程是进程的一部分。

如果这个过程已经结束,那么它的一部分已经死了。

因此,当您的JVM崩溃或被强制终止时,它所创建的所有线程也会停止执行。另外,当它内部运行的唯一线程是守护进程线程时,JVM会自动终止。