
“这是一个有趣的新话题。”“事实证明,你可以以不同的模式启动线程。”“一个标准程序(只有一个线程)在主线程完成工作时停止运行。主线程完成执行,程序终止,JVM 释放内存。”“如果我们启动一个子线程,即使主线程结束,程序也会继续运行。只要至少有一个正在运行的线程,JVM 就不会终止。一旦所有正在运行的线程都完成,程序就会关闭。”“嗯,大型程序通常有所谓的‘服务线程’,它们的工作是为程序的其他部分提供服务。它们本身并不是必需的。例如:删除未使用的对象(垃圾收集)、内存转储和错误日志记录、关于当前程序状态的各种报告等等。”“程序运行时需要这些服务线程,但它们自己不需要。”“是的,我明白这一点。”“Java 允许您将线程作为守护进程运行。此类线程的功能与其他线程相同,但如果程序中的所有非守护线程都已终止并且只剩下守护线程,则 JVM 将关闭该程序。”“所以声明一个'服务'线程只是意味着程序终止时不考虑它。就这样吗?”“嗯嗯……嗯,你说的真是简短而甜蜜。本质上,这就是我想告诉你的。”“简洁是一种天赋。有天赋的机器人在任何方面都是有天赋的。”“任何问题?”“如何将线程作为守护进程启动?从某个 DaemonThread 类继承?”“不,它比那简单得多。Thread 类有一个 setDaemon(boolean) 方法。你只需要传入 true 就可以了。你只需要在调用 start() 方法之前调用它,在真正的线程之