Javafxアプリケーションを起動しようとすると同時性に問題があります。メインゲームスレッドとは別のスレッドで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から
ありがとうございました!はい、私は十分にドキュメントを読んでいない、私はこのプログラムを書くときに私の戦略を再考する必要がありますように思えます。とにかくありがとう! :D –