Problem: Java-Klasse mit mehreren Threads als eigenen Prozess starten

KICKinYaFACE

Mitglied
Hallo Zusammen,

ich sitze jetzt schon seit einer Woche an einem Problem/Bug, den ich einfach nicht beheben kann. Ich schildere Mal kurz den Hintergrund:

Momentan arbeite ich in einem Team daran, eine Künstliche Intelligenz für die RoboCup 2D Simulation League zu erstellen. Also eine KI für Fußballspieler. (Das ganze geschieht im Rahmen einer Projektarbeit für die Uni)

Diese Fußballspieler, müssen auf den Rechnern als eigene Prozesse laufen, also pro Prozess ein Fußballspieler (Die Regeln sehen das so vor... )
Programmiertechnisch stehen diese Spieler schon bereit. Werden die Spieler erstellt, verbinden Sie sich mit einem Server, tauschen Informationen mit dem Server aus, parsen einige Informationen usw.
Die Kommunikation mit dem Server und der Parser laufen innerhalb dieser Spieler in Threads ab. Diese werden durchgehend miteinander Synchronisiert.

Momentan sieht es so aus, dass man die Spieler folgendermaßen startet:

Java:
 public class GeneralAgentTest {
	
	public static void main(String [] args){

                 Thread thread = new Thread(new HexagonRunner("127.0.0.1",6000,"UnitedTestors",-30,-15));
                           // IP, Port, Teamname, Startpositionen X und Y
thread.start();
}
}

Auf diese Weise erstellen wir uns einen Spieler, welcher sich dann mit dem Server verbindet und die ganzen Threads ständig durchläuft. Die einzige spielerische Aktion, die dieser Spieler durchführt, ist sich durchgehend zu drehen. (Natürlich nur zu Testzwecken :D ) Das funktioniert soweit auch alles tadellos.

Das Problem:
Wie bereits angesprochen, müssen diese Spieler als eigene Prozesse auf dem Rechner laufen.
Das habe ich folgendermaßen mit dem Processbuilder "versucht":

Java:
public void execute(Class klasse, int a, String str, String team, String x,
			String y) {

		String javaHome = System.getProperty("java.home");
		String javaBin = javaHome + File.separator + "bin" + File.separator
				+ "java";
		String classpath = System.getProperty("java.class.path");
		String className = klasse.getCanonicalName();

		ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath,
				className, ip, port, team, str, x, y);

		try {
			process[a] = builder.start();
			System.out.println("Should started");
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("failed");
		}
	
	}

Diese Methode wird in einer anderen Methode innerhalb einer Schleife aufgerufen und bekommt als Parameter Informationen aus TextFields übergeben. Die Klasse die aufgerufen wird, sieht so ähnlich aus wie in meinem ersten Codebeispiel. Der einzige Unterschied ist, dass beim Aufruf Parameter übergeben werden, welche lediglich zum Erstellen eines "HexagonRunners" verwendet werden.

Das funktioniert soweit auch "ganz okay", nur leider nicht ganz wie es soll.
Die Prozesse werden erstellt, die Spieler verbinden sich mit dem Server, führen ein Mal den Befehl zum drehen aus, und ab diesem Moment stehen sie still.
Die Prozesse bleiben geöffnet, arbeiten anscheinend auch (ziehen ordentlich CPU), sind noch immer mit dem Server verbunden, aber es tut sich einfach nichts mehr.

Ich weiß einfach nicht woran es liegt. Ich hab mich schon durch einige andere Foren gelesen und verschiedenes ausprobiert. Zuletzt hängen geblieben bin ich bei der Klasse ExecutorService. Diese sollte eigentlich Abhilfe schaffen. Das Ganze hat aber nicht funktioniert, weil der Fehler entweder wo anders liegt oder ich zu doof bin den Executor richtig zu verwenden.


Soviel zu meiner Problemstellung, wollte meine Angelegenheit etwas genauer formulieren.
Ich hoffe, mir kann bei meinem Problem geholfen werden. :(

Bin für alle Vorschläge offen.


Grüße, kick
 

CptSocket

Aktives Mitglied
Hallo Kick

Was meinst du genau mit es tut sich nichts mehr? Ist es möglich, dass du eine Reaktion auf der Konsole wartest (System.out.println() oder ähnlich) und da nichts passiert?

Falls ja - hast du den Error- und InputStream von den Prozessen korrekt umgeleitet? (Siehe z.B. java - ProcessBuilder: Forwarding stdout and stderr of started processes without blocking the main thread - Stack Overflow, die Antwort mit dem StreamGobbler)

Auch wenn der Prozess noch andere Dinge tun sollte - wenn die Streams nicht umgeleitet/ausgelesen werden, kann dies dazu führen, dass der Prozess hängt.


Freundliche Grüsse
CptSocket
 

KICKinYaFACE

Mitglied
Hallo CptSocket,

auf eine Ausgabe auf der Konsole habe ich eigentlich nicht gewartet, hat aber trotzdem geholfen diesen Gobbler mit einzubauen :) Es scheint so, als würden sich die Threads ab einem bestimmten Durchlauf gegenseitig überholen und dann klappt das mit der Synchronisation nicht mehr so ganz wie gedacht.

Die eigentliche Reaktion die ich erwartet habe war, dass sich der Spieler auf dem Spielfeld durchgehend dreht. Dafür habe ich einen sogenannten ServerMonitor, welcher die Momentansituation von dem Server grafisch darstellt. Auf diesem Monitor schaut man sich letztendlich dann auch das Spiel an.

Ich habe jetzt eben das Problem, dass die Spieler auf dem Monitor zu sehen sind, sie sich aber nicht drehen. Dies ist aber eben nur der Fall, wenn ich die Spieler über eigene Prozesse starte. Wenn ich direkt in meiner IDE (Eclipse) die Klasse zum erstellen der Spieler starte, läuft alles wunderbar.

Grüße
kick
 

KICKinYaFACE

Mitglied
Heey, es läuft :D :D


Es scheint so, als würden sich die Threads gegenseitig blockieren, eben weil sie keine Ausgabemöglichkeiten hatten.
Ich habe jetzt 3 Gobbler in meiner Klasse drin für: Error, Output und Input.
Jetzt drehen sich alle Spieler durchgehend im Kreis :)

Super, danke! Wäre ich mal sofort hier hin gekommen :D

Liebe Grüße
kick
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Java modul Problem Allgemeine Java-Themen 4
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
Seikuassi Input/Output Java transferTo ByteArrayOutputStream-Problem Allgemeine Java-Themen 4
B Best Practice Java Zugriffsrechte Problem Allgemeine Java-Themen 2
B Java Zahlenausgabe Problem Allgemeine Java-Themen 6
N Problem mit Java Sperrlisten Allgemeine Java-Themen 0
F Java Spiel Sprung problem Allgemeine Java-Themen 5
G JavaFX Problem nach Update auf Java 8 Allgemeine Java-Themen 0
S Java Problem bei der Rückgabe eines Arrays Allgemeine Java-Themen 19
M Problem mit (etwas komplizierterem) Java Programm Allgemeine Java-Themen 14
W Java Logging Problem Allgemeine Java-Themen 3
K java problem Allgemeine Java-Themen 5
B java.io.IOException: Problem reading font data. Allgemeine Java-Themen 9
H Problem mit Java Generics Allgemeine Java-Themen 6
P Eclipse Java Native Interface-Problem Allgemeine Java-Themen 8
I Java als Dienst Problem Allgemeine Java-Themen 2
F Problem mit Java 7 und Proguard Allgemeine Java-Themen 6
L Input/Output Java und CMD Problem Allgemeine Java-Themen 3
C Java Server Pages Problem Allgemeine Java-Themen 6
M Lego Nxt und Java Problem Allgemeine Java-Themen 8
S Perfomance Problem mit Java Applikation Allgemeine Java-Themen 4
G Problem Java Mail API: CC wird nicht berücksichtigt Allgemeine Java-Themen 7
P Problem mit Java Web Start Allgemeine Java-Themen 1
J Eclipse Java Build Path / Java Problem??? Allgemeine Java-Themen 13
B USB-I2C Adapter JAVA problem Allgemeine Java-Themen 6
D Problem mit java.sql.Timestamp Allgemeine Java-Themen 2
L Problem mit Hintergrund bei JAVA Applet Allgemeine Java-Themen 27
D Problem mit Java version? Allgemeine Java-Themen 4
P Zip Problem in Java Allgemeine Java-Themen 4
N Kleines nicht java Problem Allgemeine Java-Themen 7
G Problem mit RSA Verschlüsselung bei .net und Java Allgemeine Java-Themen 1
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
V Java heap space Problem Allgemeine Java-Themen 8
T Problem: eclipse / Java / cyrillisch Allgemeine Java-Themen 4
D Problem mit java.util.scanner: Falsche Ergebnisse Allgemeine Java-Themen 4
S Java 5/6 Problem im Classpath Allgemeine Java-Themen 11
F Problem mit Java Listen Allgemeine Java-Themen 4
M Java applet zusammen mit DHTML z-index Problem Allgemeine Java-Themen 2
G problem mit java-editor Allgemeine Java-Themen 4
H Problem mit Java (dsound.dll) Allgemeine Java-Themen 5
E Java.net und Thread-Problem Allgemeine Java-Themen 2
S Problem mit backreference mit java und regex Allgemeine Java-Themen 7
L WindowsTrayIcon in Java 1.4 - Problem beim ausführen der JAR Allgemeine Java-Themen 2
C Java Batch Warte Problem Allgemeine Java-Themen 4
P Java Acces Datenbank Problem ! (Brauche eine Abfrage) Allgemeine Java-Themen 5
G Java-Problem mit Netbeans Allgemeine Java-Themen 2
J Problem mit Java Multimedia Framework Allgemeine Java-Themen 6
G Problem mit Java Fenstern Allgemeine Java-Themen 2
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
B java problem - speichern Allgemeine Java-Themen 9
G Problem mit java.lang.reflect.Field Allgemeine Java-Themen 15
G java! Problem mit Chat-Applet Allgemeine Java-Themen 3
S Problem beim Bearbeiten von Java-Dateien unter Linux Allgemeine Java-Themen 3
R Browser-Problem nach Java-Update Allgemeine Java-Themen 9
D (gelöst) Java-Problem bei freemind mit fedora core 4 Allgemeine Java-Themen 9
G Java Server Faces - Problem Allgemeine Java-Themen 2
L-ectron-X Problem mit Collections.sort() mit Java 1.5 Allgemeine Java-Themen 9
C Hilfe! Java Control Panel & Limewire Problem! Allgemeine Java-Themen 3
A Probleme bei der Berechnung von Pi! Java Problem Allgemeine Java-Themen 2
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
T JAVA+SQL=Mysteriöses Problem Allgemeine Java-Themen 3
P java exe erstellen problem Allgemeine Java-Themen 3
N Java Problem mit WIN ME Allgemeine Java-Themen 2
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
D Read JSON File Problem Allgemeine Java-Themen 9
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0

Ähnliche Java Themen

Neue Themen


Oben