gpt4 book ai didi

java - 无法在主游戏线程的单独线程上启动 Javafx 应用程序

转载 作者:行者123 更新时间:2023-11-30 02:40:40 25 4
gpt4 key购买 nike

我在尝试启动 Javafx 应用程序时遇到并发问题。

我编写了一个基于文本的游戏,但我也想创建自己的控制台来玩它,因此我制作了一个单独运行良好的控制台 javafx 应用程序。我将控制台导出为 Jar 文件并将其添加到我的游戏的构建路径中。

游戏开始后不久,将执行此代码片段,启动一个新线程:

public Game(String playerName) {
player = new Player(playerName);
try {
conThread = new ConsoleThread();
conThread.start();
} catch (Exception e) {
e.printStackTrace();
}
parser = new Parser(conThread);
createRooms();
}

启动的新线程如下所示:

public class ConsoleThread extends Thread{
public ConsoleThread() {
Application.launch(Console.class);
}

public void printToConsole(String text) {
Console.printGameInfo(text);
}

public String textFromConsole() {
return Console.getTextField();
}

该线程类应该在主游戏继续时启动控制台应用程序。然而,一旦应用程序启动,控制台就会按预期显示,但游戏的其余部分会卡住。主游戏线程在启动新线程后就会停止,并且只有在我手动关闭控制台应用程序时才会继续。

我想让控制台应用程序在自己的线程上工作,玩家可以输入文本,主游戏线程将读取它并打印出其他内容。我对 Java 并发有什么不明白的地方?

最佳答案

来自documentation :

The launch method does not return until the application has exited, either via a call to Platform.exit or all of the application windows have been closed.

因此您的代码在 new ConsoleThread() 处阻塞。

另请注意,launch() 只能调用一次,因此,根据您在此处执行的具体操作,您可能需要重新考虑此处的整个策略。

相关问题:Call JavaFX in Java program and wait for wait to exit before running more code

关于java - 无法在主游戏线程的单独线程上启动 Javafx 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41815467/

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