如果一个线程创建了一个守护线程,那么当父线程退出运行方法时,我能否依赖于这样一个事实,即子线程也会终止?
如果一个线程创建了一个守护线程,那么当父线程退出运行方法时,我能否依赖于这样一个事实,即子线程也会终止?
不会。各个线程是独立的,没有一个线程“拥有”另一个线程并强制终止它。
如果你真正想知道的是当应用程序中所有非守护线程都已停止时,你是否可以依赖进程停止:是的,可以。但这是你能够信赖的全部。
特别地,如果有两个非守护线程,每个线程都创建了一个守护线程,并且其中一个非守护线程终止,那么剩下的三个线程将继续运行。
我相信守护线程是与JVM而非创建线程绑定的。
From: http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/daemon.html
当进程中仅剩下守护线程时,解释器会退出。这是有道理的,因为当只有守护线程剩余时,没有其他线程需要守护线程提供服务。