Есть ли поточно-безопасный способ одновременного использования stdout из внешнего процесса с использованием ProcessBuilder в Java 1.6?Одновременно потреблять stdout из внешнего процесса
Предпосылки: Мне нужно вызвать pbzip2, чтобы распаковать большие файлы в stdout и обрабатывать каждую строку при распаковке файла (pbzip2 использует несколько процессоров, в отличие от других реализаций).
Логический подход заключается в создании дочернего потока в петле через InputStream (т.е. стандартный вывод, вы просто не любите именование?) Следующим образом:
while((line = reader.readLine()) != null)
{
// do stuff
}
Однако разархивирования медленно, так то, что мне действительно нужно, это метод reader.readLine, чтобы спокойно ждать следующей строки, чтобы стать доступной, а не выйти.
Есть ли хороший способ сделать это?
Reader.readLine() делает именно то, что вы хотите. Выходит слишком рано? – akarnokd
Нет, документация, которую я имел, не указывала, будет ли она ждать или нет, так что мне стало интересно, насколько это было поточно-безопасным - например, если бы время просто закончилось, readLine подумал бы о потоке закрыто. – Rob