什么会导致Java在返回后继续运行

什么会导致Java在返回后继续运行,java,jvm,freeze,Java,Jvm,Freeze,我在进行一些特殊的GUI交互时遇到了这个问题。 我的情况是:我使用一个对话框。我不打电话给 System.exit(),但稍后返回并离开应用程序。 通常情况下,当JVM看到不再存在时,它就会存在 非DEAMON线程正在运行。但是在使用这个对话框之后, 它不起作用 我是100%舒尔,对话框中调用了dispose() 在问题中,还对应用程序的主要框架进行了说明。 我在IDE中和从 命令行。我可以通过按下按钮杀死它 IDE,或使用命令行中的Ctrl-C 但是如果JVM正确终止,当然会更好 在交付应用程

我在进行一些特殊的GUI交互时遇到了这个问题。 我的情况是:我使用一个对话框。我不打电话给
System.exit(),但稍后返回并离开应用程序。 通常情况下,当JVM看到不再存在时,它就会存在 非DEAMON线程正在运行。但是在使用这个对话框之后, 它不起作用

我是100%舒尔,对话框中调用了dispose() 在问题中,还对应用程序的主要框架进行了说明。 我在IDE中和从 命令行。我可以通过按下按钮杀死它 IDE,或使用命令行中的Ctrl-C

但是如果JVM正确终止,当然会更好 在交付应用程序之前,它会自动恢复

任何线索,这是已知的问题吗?我使用的是JDK1.7,但是 JDK1.6中已经出现了问题

致意

附言:我只是在读: 过去也有类似的问题。也许这是一个新问题。 过去的问题是: 其他软件包可以根据内部需要创建可显示的组件,而不会使其无法显示。看,还有。
我将在弹出菜单的显式设置Visible(false)中尝试一些。关闭帧时的默认操作是将其隐藏。UI线程仍处于活动状态

如果您希望JVM在关闭所创建的帧(可能是“弹出窗口”)时退出,则必须明确地这样说,例如,通过执行
frame.setDefaultCloseOperation(JFrame.exit_ON_close),更多文档。可能您只需要将DISPOSE\u ON\u CLOSE作为defaultclose操作


另一种选择是向框架添加windowListener,并在框架关闭时自行决定正确的操作。

关闭框架时的默认操作是将其隐藏。UI线程仍处于活动状态

如果您希望JVM在关闭所创建的帧(可能是“弹出窗口”)时退出,则必须明确地这样说,例如,通过执行
frame.setDefaultCloseOperation(JFrame.exit_ON_close),更多文档。可能您只需要将DISPOSE\u ON\u CLOSE作为defaultclose操作


另一种选择是在框架中添加windowListener,并在框架关闭时自行决定正确的操作。

听起来至少有一个线程正在阻塞,无法响应中断。也许在所讨论的线程上使用.getState()可以帮助我们了解这个问题


听起来好像至少有一个线程正在阻塞,无法响应中断。也许在所讨论的线程上使用.getState()可以帮助我们了解这个问题


您确定弹出窗口已被销毁而不仅仅是隐藏吗?我相信默认操作是隐藏,将默认关闭操作设置为JFRAME.EXIT\u ON\u close可能会解决这个问题


另一种诊断问题的方法是使用探查器,如Netbeans附带的探查器。在应用程序应该终止之前使用实时视图和调试点,您可以检查实时对象。

您确定弹出窗口已被销毁而不仅仅是隐藏吗?我相信默认操作是隐藏,将默认关闭操作设置为JFRAME.EXIT\u ON\u close可能会解决这个问题


另一种诊断问题的方法是使用探查器,如Netbeans附带的探查器。在应用程序应该终止之前使用实时视图和调试点,您可以检查实时对象。

我也遇到了同样的问题,在
事件队列中调用
dispose()
。invokeLater(新的Runnable(){…}
为我解决了这个问题,在
事件队列中调用
dispose()
(new Runnable(){…}
为我解决了它

我使用的IDE允许创建线程快照。在JDK 1.6.0_27下,我只看到守护进程线程,除了AWT Shutdown、DestroyJavaVM、VM和GC线程以及一个AWT-EventQueue-0(原文如此!)。我不知道AWT-EventQueue-0从何处启动。它会等待。我使用的IDE允许创建线程快照。在JDK 1.6.0_27下,我只看到守护进程线程,除了AWT关机、销毁JavaVM、VM和GC线程以及一个AWT-EventQueue-0(原文如此!)。我不知道AWT-EventQueue-0从何处开始。它执行等待操作。这与弹出对话框无关,而是与弹出菜单有关。如果出现缺少dispose()的问题,则我无法在不使用弹出菜单的情况下正确退出。这与弹出对话框无关,而是与弹出菜单有关。如果缺少dispose())当我不使用弹出菜单时,我无法正确退出。这与弹出对话框无关,而是与弹出菜单有关。当缺少dispose()是问题时,当我不使用弹出菜单时,我无法正确退出。这与弹出对话框无关,而是与弹出菜单有关。当缺少dispose()时当我不使用弹出菜单时,如果出现问题,我无法正确退出。