Ich habe ein Problem mit dem gemeinsamen Zugriff, wenn ich versuche, eine Javafx-Anwendung zu starten.Eine Javafx-Anwendung kann nicht in einem separaten Thread von einem Hauptspiel-Thread gestartet werden
Ich habe ein textbasiertes Spiel geschrieben, aber ich wollte auch meine eigene Konsole erstellen, um es zu spielen, und deshalb habe ich eine Console Javafx-Anwendung gemacht, die gut alleine funktioniert. Ich habe die Konsole als Jar-Datei exportiert und sie dem Build-Pfad für mein Spiel hinzugefügt.
Kurz nach dem Spiel beginnt, wird dieser Ausschnitt ausgeführt wird, einen neuen Thread starten:
public Game(String playerName) {
player = new Player(playerName);
try {
conThread = new ConsoleThread();
conThread.start();
} catch (Exception e) {
e.printStackTrace();
}
parser = new Parser(conThread);
createRooms();
}
Der neue Thread, der gestartet wird, sieht wie folgt aus: ist
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();
}
Dieser Thread-Klasse soll Starten Sie die Konsolenanwendung, während das Hauptspiel fortgesetzt wird. Sobald die Anwendung gestartet wird, wird die Konsole jedoch wie beabsichtigt angezeigt, der Rest des Spiels bleibt jedoch stehen. Der Hauptspiel-Thread stoppt einfach nach dem Start des neuen Threads und fährt nur fort, wenn ich die Konsolen-Anwendung manuell schließe.
Ich wollte die Console-Anwendung auf einem eigenen Thread arbeiten lassen, wo der Spieler Text eingeben konnte und der Hauptspiel-Thread es lesen und etwas anderes ausdrucken würde. Was verstehe ich nicht über Java-Parallelität?
Danke für Ihre Antwort! Ja, ich habe die Dokumente nicht genug gelesen, es scheint, als müsste ich meine Strategie überdenken, wenn ich dieses Programm schreibe. Danke trotzdem! : D –