摇摆和线程

时间:2012-03-21 09:50:06

标签: java multithreading swing

我有一个Swing界面,当我点击一个按钮时,一个线程是在无限远处创建的(属时为(true)...)。

我的问题是:当我关闭主进程时,创建的线程会自动关闭吗?

2 个答案:

答案 0 :(得分:5)

取决于你启动的线程是否是守护程序线程,以及你如何关闭主进程。

以下是标准库中的relevant documentation

  

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

     
      
  • 已调用类Runtime的exit方法,安全管理器已允许退出操作。

  •   
  • 所有非守护程序线程的线程都已死亡,无论是通过从run方法的调用返回还是抛出一个超出run方法传播的异常。

  •   

因此,如果您按System.exitjframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)关闭主进程,则关闭时所有线程都将死亡。

如果只是让主线程(运行public static void main的线程)从主方法的边缘掉落,那么线程将继续运行。

答案 1 :(得分:1)

是的,只要它没有设置为守护程序线程。您可以使用jps工具查看已检测的JVM:

jps -l