Java应用程序生命周期

Alb*_*ore 2 java lifecycle multithreading main-method

典型的Java应用程序什么时候完成?

如果我在main方法中启动一个新线程,然后main方法结束,但另一个线程继续工作,应用程序仍然会打开,直到它的所有线程都已经死了,不是吗?

谢谢,圣诞快乐!

Rek*_*kin 6

是的,除非它是一个deamon线程.从Thread API引用:

当Java虚拟机启动时,通常会有一个非守护程序线程(通常调用某个指定类的名为main的方法).Java虚拟机继续执行线程,直到发生以下任一情况:

  • 已调用类Runtime的exit方法,并且安全管理器已允许执行退出操作.
  • 所有非守护程序线程的线程都已死亡,无论是通过从run方法调用返回还是抛出传播超出run方法的异常.