典型的 Java 应用程序何时完成?
如果我在该方法中启动一个新线程,main
然后该main
方法完成,但另一个线程继续工作,应用程序仍将继续运行,直到它的所有线程都死了,不是吗?
谢谢&圣诞快乐!
典型的 Java 应用程序何时完成?
如果我在该方法中启动一个新线程,main
然后该main
方法完成,但另一个线程继续工作,应用程序仍将继续运行,直到它的所有线程都死了,不是吗?
谢谢&圣诞快乐!
是的,除非它是一个守护线程。从Thread API引用:
当 Java 虚拟机启动时,通常有一个非守护线程(通常调用某个指定类的名为 main 的方法)。Java 虚拟机继续执行线程,直到发生以下任一情况:
- 已调用 Runtime 类的退出方法,并且安全管理器已允许进行退出操作。
- 所有不是守护线程的线程都已经死亡,要么通过调用 run 方法返回,要么抛出传播到 run 方法之外的异常。
main() 函数定义了您的主用户线程。您可能还创建了其他用户线程。您可能还在其中一些线程上调用了 setDeamon()。
JVM 将在以下情况下结束: