【发布时间】:2017-06-08 12:01:30
【问题描述】:
我在尝试启动 Javafx 应用程序时遇到并发问题。
我编写了一个基于文本的游戏,但我也想创建自己的控制台来玩它,因此我制作了一个控制台 javafx 应用程序,它自己运行良好。我将控制台导出为 Jar 文件并将其添加到我的游戏的构建路径中。
游戏开始后不久,这个sn-p被执行,开始一个新线程:
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 并发有什么不了解的地方?
【问题讨论】:
标签: java multithreading javafx