Ich habe eine Java-GUI-Anwendung erstellt, die als Wrapper für viele externe Prozesse auf niedriger Ebene fungiert. Das Dienstprogramm funktioniert so wie es ist, benötigt aber dringend eine wesentliche Verbesserung.
Ich möchte, dass mein externer Prozess nicht blockierend ausgeführt wird, sodass ich weitere Anfragen parallel bearbeiten kann. Kurz gesagt, ich möchte in der Lage sein, Daten aus dem externen Prozess zu verarbeiten, während die Daten generiert werden. Aber es scheint mein grundlegender Versuch zu sein, zu überprüfen und zu sehen, ob der externe Prozess noch läuft, blockiert.
Nachfolgend finden Sie einen Auszug aus meiner ExternalProcess-Klasse. In Inline-Kommentaren finden Sie Informationen zu bestimmten Java-Funktionsfragen zum Threading und zum Blockieren.
%Vor% Die Methode run()
wird täuschend benannt. Da Thread
die Schnittstelle Runnable
implementiert, wird die Methode run()
öffentlich verfügbar gemacht, ist jedoch nicht die richtige Methode, um einen neuen Thread zu starten. Der Aufruf von run()
bewirkt, dass der Thread-Code im aktuellen Thread ausgeführt wird.
Sie müssen start()
aufrufen, damit ein neuer Thread instanziiert wird:
Tags und Links java multithreading nonblocking