У меня есть поток, работающий под котом, который создает HttpUrlConnection и читает его через BufferedInputStream.
После выбирающих данных для некоторых URL это останавливается. Я получил jstack процесса, который говорит, что HttpUrlConnection заблокирован, и BufferedInputStream также заблокирован.
"http-8080-1" daemon prio=10 tid=0x08683400 nid=0x79c9 runnable [0x8f618000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
- locked <0x956ef8c0> (a java.io.BufferedInputStream)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072)
- locked <0x956ef910> (a sun.net.www.protocol.http.HttpURLConnection)
Мог кто-то помогать здесь.Спасибо
У вас, вероятно, проблема на другом конце провода. read () для InputStream - это операция блокировки - из javadoc ( http://java.sun.com/javase/6/docs/api/ ): «Этот метод блокируется до тех пор, пока входные данные не станут доступны. , обнаруживается конец потока или создается исключение. "
Отвечает ли сервер на другом конце? Вы знаете, отправил ли он что-нибудь?
edit: Чтобы было понятнее, поток находится в состоянии RUNNABLE, поэтому вы не зашли в тупик - похоже, что вы так думаете, но здесь нет никаких доказательств любого тупика.