我读到了这样的声明:
主线程必须是最后完成执行的线程。当主线程停止时,程序终止。
这是真的吗?
我也开始知道“即使主线程死了,程序仍然运行”。
这是我目前的理解:
- 当您启动一个程序时,JVM 会创建一个线程来运行您的程序。
- JVM 创建一个用户线程来运行程序。该线程称为主线程。
- The
main
从主线程调用该类的方法。
- 如果程序从主线程生成新线程,则程序将等待直到最后一个线程死亡。
哪一个是真的?
当所有非守护线程死亡时,程序终止(守护线程是标记为setDaemon(true)
;它通常用于实用程序线程)。来自文档:
当Java虚拟机启动时,通常有一个非守护线程(它通常调用某个指定类的名为main的方法)。 Java 虚拟机继续执行线程,直到发生以下任一情况:
- Runtime 类的 exit 方法已被调用,并且安全管理器已允许进行退出操作。
- 所有非守护线程的线程都已死亡,原因是从对 run 方法的调用返回或抛出传播到 run 方法之外的异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)