Nicht blockierender Thread, der einen externen Prozess ausführt

8

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%     
Rodney 09.05.2011, 20:39
quelle

2 Antworten

8

Die run () -Methode für Thread startet eigentlich keinen neuen Thread, stattdessen versuchen Sie es mit Thread.start ().

    
Mike Deck 09.05.2011, 20:45
quelle
7
%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:

%Vor%     
John Kugelman 09.05.2011 20:47
quelle