gpt4 book ai didi

JavaFX 8 JVM 退出后仍保留

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:04 25 4
gpt4 key购买 nike

我创建了一个 JavaFX 应用程序,并注意到在关闭主舞台后,会发生以下情况:

  • 调用应用程序“停止”方法
  • 继续main方法
  • 程序离开main方法后,JVM无法关闭

我不创建任何线程(至少明确不创建)。此时正在运行的线程是(来自调试控制台):

  • 调用LaterDispatcher
  • Prism 字体处理器
  • 'pool-2-thread-1'(我不知道这是什么 - ThreadPoolExecutor 部分位于其堆栈跟踪中)
  • HSQLDB 计时器(我在开发/调试系统上使用 HSQLDB 文件数据库)
  • FX 访问线程(可视化调试器)
  • 废弃的连接清理线程

以下哪个线程可以阻止 JVM 关闭?我认为所有这些都应该是守护线程......

这是我的应用程序代码:

public class MainApp extends Application {

@Override
public void start(Stage stage) throws Exception {
final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/Main.fxml"));
Parent root = fxmlLoader.load();

Scene scene = new Scene(root);
scene.getStylesheets().add("/styles/Styles.css");

//... Scene/stage setup here
stage.show();
}

@Override
public void stop() throws Exception {
super.stop();
}

public static void main(String[] args) {
launch(args);
}
}

添加 System.exit(0);在 stop() 方法的末尾修复了这个问题,但我不确定这是否是问题的最佳解决方案......有什么想法吗?

提前致谢

最佳答案

你说你正在使用HSQLDB,你没有显示初始化它的代码。在 stop() 方法中,关闭该连接。

关于JavaFX 8 JVM 退出后仍保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27686935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com