Если сервер не закрывает соединение, но прекращает отправку данных, in.read()
заблокируется. Теперь обратите внимание, что код для HttpURLConnection.HttpInputStream.close()
также попытается прочитать из потока, чтобы определить, что достигнут конец потока ( исходный код) .
close()
, в свою очередь, вызывается с disconnect()
. И в конечном итоге ваши темы заблокированы.
Так что, похоже, вам нужно изменить свою логику. Я предполагаю, что вы закрываете соединение на основании некоторых условий. Поэтому вместо того, чтобы делать это в другом потоке, проверьте условия перед чтением следующего байта в потоке чтения, а затем отключите его.
И, кстати, Thread.interrupt()
вам не поможет, поскольку он будет прерывать только потоки, ожидающие на мониторах, в то время как ваш ожидает на IO.