Gibt es eine thread-sichere Möglichkeit, das stdout gleichzeitig von einem externen Prozess konsumieren, mit ProcessBuilder in Java 1.6?Gleichzeitig konsumieren stdout von einem externen Prozess
Hintergrund: Ich muss pbzip2 aufrufen, um große Dateien in stdout zu entpacken und jede Zeile zu verarbeiten, während die Datei dekomprimiert wird (pbzip2 verwendet im Gegensatz zu anderen Implementierungen mehrere CPUs).
Der logische Ansatz ist, ein Kind Thread zu Schleife über die Input zu erstellen (dh stdout, nicht lieben Sie gerade die Namensgebung?), Wie folgt:
while((line = reader.readLine()) != null)
{
// do stuff
}
jedoch unzipping langsam ist, so Was ich wirklich brauche, ist, dass die reader.Line-Methode ruhig darauf wartet, dass die nächsten Zeilen verfügbar werden, anstatt zu beenden.
Gibt es einen guten Weg, dies zu tun?
Die reader.readLine() tut genau das, was Sie wollen. Ist Ihre Implementierung zu früh beendet? – akarnokd
Nein, die Dokumentation, die ich hatte, gab nicht an, ob sie warten würde oder nicht, also habe ich mich gefragt, ob das threadsicher war - zum Beispiel ob readLine den Stream denken würde, wenn das Timing gerade vorbei wäre ist geschlossen. – Rob