Javafx Platform.runLater从未运行过

时间:2015-03-27 14:17:06

标签: java multithreading javafx lwjgl

我基本上希望能够在我的LWJGL / GLFW线程启动后(和内部)启动一个新的Javafx窗口(阶段)。我基本上在做:

Thread thread = new Thread(()->Platform.runLater(()->{
    Stage stage = new Stage();
    //Stage setup
    stage.show();
}));
thread.start();

线程是我的游戏线程。 但它永远不会运行,我在System.out.println()内尝试Platform.runLater()只是为了检查它是否永远无法运行。

为什么它永远不会运行,我该怎么做才能解决它?感谢。

编辑:只是为了澄清线程已经明确地开始了,不管怎样,如果我这样做:

Thread thread = new Thread(()->{
    System.out.println("Before Platform.runLater()");
    Platform.runLater(()->System.out.println("Inside Platform.runLater()"));
    System.out.println("After Platform.runLater()");
});

输出:

Before Platform.runLater()
After Platform.runLater()

1 个答案:

答案 0 :(得分:24)

好的,我找到了解决方法!

如果遇到所有场景都结束的任何情况,管理所有这些的线程就会消失。要防止这种情况发生,请在Platform.runLater之前添加此行:

Platform.setImplicitExit(false);
Platform.runLater(()->System.out.println("Inside Platform.runLater()"));

只要在最后一个场景结束之前运行,它就会使线程保持活动状态,并且你不会遇到runLater()失败的问题!