У вас более или менее есть решение самостоятельно. Вы просто создаете новый поток, который читает следующую строку цикла из потока вашего внешнего процесса и обрабатывает эту строку.
readLine () заблокирует и подождет, пока не станет доступна вся новая строка. Если вы работаете на многоядерной / процессорной машине, ваш внешний процесс может успешно разархивироваться, пока ваш поток обрабатывает строку. Разархивирование по умолчанию может продолжаться до тех пор, пока каналы / буферы ОС не заполнятся.
Просто отметьте, что если ваша обработка медленнее, чем разархивирование, вы заблокируете разархивирование, и в этот момент это становится проблемой памяти и скорости. например Вы можете создать один поток, который ничего не делает, кроме чтения строк (поэтому разархивирование не блокирует), буферизует их в очереди в памяти и другой поток - или даже несколько, который использует указанную очередь.
метод readLine для тихого ожидания
следующая строка (и), чтобы стать доступными,
вместо выхода
и это именно то, что должен делать readLine, он будет просто блокироваться, пока не будет доступна вся строка.