, у меня есть поток, в котором метод read ()
для InputStream
вызывается в цикле. Когда больше нет байтов для чтения, поток будет заблокирован до тех пор, пока не появятся новые данные.
Если я вызову close ()
в InputStream
из другого потока, поток получит закрыто, но заблокированный вызов read ()
по-прежнему остается заблокированным. Я бы предположил, что метод read ()
теперь должен возвращать значение -1
, чтобы указать конец потока, но это не так. Вместо этого он остается заблокированным еще несколько минут, пока не истечет тайм-аут TCP.
Как мне разблокировать вызов close ()
?
Изменить:
По-видимому, обычная JRE выдаст сообщение SocketException
немедленно, когда поток или сокет блокирует read ()Вызов
соответствует is close ()
'd. Однако среда выполнения Android Java, которую я использую, не будет.
Мы будем очень благодарны за любые подсказки по решению для среды Android.