Проблема не в размере буфера BufferedReader
.
Я думаю, что настоящая причина - это то, что делает внешняя команда. Я подозреваю, что он спасается, не сбрасывая свой стандартный поток. Обратите внимание, что вы «проглатываете», но не выводите поток команды stderr. Здесь вы можете найти доказательства, указывающие на истинную причину проблемы.
Кстати, вы используете класс StreamGobbler
неоптимальным образом. Это расширяет Thread
, поэтому предполагаемый способ использования:
SteamGobbler sg = new StreamGobbler(...);
sg.start();
sg.join();
но вы фактически делаете это:
SteamGobbler sg = new StreamGobbler(...);
Thread th = new Thread(sg);
th.start();
th.join();
Это работает ... но только потому, что Thread
- это Runnable
.