Могу ли я предложить вам не выполнять блокировку вызовов read()
, если вы сначала не проверили наличие данных, готовых для чтения, с помощью inputstream.available()
, который возвращает целое число, указывающее, сколько байтов ожидает во входном буфере.
long timeouttime = gettimeinseconds() + 2;
String response = "";
while (gettimeinseconds() < timeouttime) {
if (inputstream.available() > 0)
response = response + inputstream.read();
} else {
Thread.sleep(100); // sleep to slow down the while() loop.
}
}
return response;
Это просто псевдокод, и он упрощен. Суть в том, что мы не выполняем никаких блокирующих вызовов (read()
), если не уверены, что они сразу же вернутся незамедлительно.
Кроме того, я настоятельно рекомендую использовать BufferedInputStream
вместо стандартного InputStream
.