当不再有非守护程序线程时,该进程将终止,并在必要时终止所有守护程序线程。但是,如果 确实 有任何非守护线程,则这些线程将阻止进程终止。
来自
Thread.setDaemon:
将此线程标记为守护程序线程或用户线程。当所有正在运行的线程都是守护程序线程时,Java虚拟机将退出。
必须在启动线程之前调用此方法。
从JLS的12.8节开始:
程序终止其所有活动并在发生以下两种情况之一时退出:
不是守护程序线程的所有线程都会终止。
某些线程调用类Runtime或System类的exit方法,并且安全管理器不禁止退出操作。



