Вы добавляете каждую прочитанную строку в существующую строку.
Во-первых, добавление таких строк неэффективно - вам следует использовать StringBuilder, особенно для больших или многочисленных строк.Ваш метод будет становиться все медленнее и медленнее (и в конечном итоге заполнять всю память).
Вы продолжаете добавлять навсегда (до тех пор, пока есть входные данные), так что, как вы говорите, он никогда не завершится.
Вам нужно прочитать порцию данных (возможно, строку за раз, но это зависит от ваших данных) и затем обработать эту порцию (возможно, в другом потоке, чтобы чтение и обработка могли происходить параллельно).
Таким образом, вместо:
while ( (line = br.readLine()) != null) {
returner += line;
}
Вам необходимо:
while ( (line = br.readLine()) != null) {
processLine(line);
}
Где processLine()
делает что-то полезное с данными.