java - HttpURLConnection 被锁定

标签 java locking httpurlconnection

我有一个在 tomcat 下运行的线程,它创建一个 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)

有人可以帮忙吗? 谢谢

最佳答案

您的另一端可能有问题。 InputStream 上的 read() 是阻塞操作 - 来自 javadoc ( http://java.sun.com/javase/6/docs/api/ ):“此方法阻塞直到输入数据可用、检测到流的末尾或抛出异常。”

另一端的服务器是否有响应?你知道它是否发送了什么吗?

编辑:为了更清楚地说明,线程处于 RUNNABLE 状态,因此您没有死锁 - 听起来这就是您的想法,但这里没有任何死锁的证据。

关于java - HttpURLConnection 被锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999340/

相关文章:

java - 将bean xml转换为spring boot注释

java - 异常处理 - 给定场景中的可能方法

linux - 为什么在中断中使用 mutex_trylock 不安全?

java - hazelcast IMap 只能用于锁定目的吗?

java - 为什么 HttpURLConnection 不发送 HTTP 请求

java - 如何使我在 MySQL 数据库中的主键适用于小写和大写?

c# - FileHelpers在调用engine.ReadNext()方法和readign engine.LineNumber属性之间的线程锁定问题

android - android2.2 上的 HttpsURLConnection 奇怪行为

java - 需要帮助登录网站和检索信息

java - Syncano Android SDK - 类对象中的引用字段