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