当父线程退出时,Java守护线程会自动终止吗?

5

如果一个线程创建了一个守护线程,那么当父线程退出运行方法时,我能否依赖于这样一个事实,即子线程也会终止?


setDaemon的Javadoc中写道:“当仅剩的所有线程都是守护线程时,Java虚拟机将退出。” - Peter Lawrey
3个回答

12

不会。各个线程是独立的,没有一个线程“拥有”另一个线程并强制终止它。

如果你真正想知道的是当应用程序中所有非守护线程都已停止时,你是否可以依赖进程停止:是的,可以。但这是你能够信赖的全部

特别地,如果有两个非守护线程,每个线程都创建了一个守护线程,并且其中一个非守护线程终止,那么剩下的三个线程将继续运行。


1
你如何在问题发布后一分钟内写出如此完整的答案,这超出了我的理解范围。即使你回头编辑,时间也只有两分钟。 - Michael Myers
1
这只是几句话而已。我打字相当快,碰巧早早地看到了它。我想我的记录是在问题发布不到一分钟就回答并被采纳了 ;) - Jon Skeet

1

我相信守护线程是与JVM而非创建线程绑定的。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接