HttpURLConnection getoutputstream()线程状态将转为BLOCKED

时间:2017-03-16 11:36:15

标签: java multithreading tomcat servlets httpurlconnection

我使用HttpURLConnection类发出http请求。我的代码看起来像这样:

conn = (HttpURLConnection)new URL(endPoint.trim()).openConnection();
    conn.setConnectTimeout(rtbTimeOut); // 200 ms
    conn.setReadTimeout(rtbTimeOut);
    conn.setDoOutput(true);
    conn.setRequestMethod(ApiConstants.REQUEST_POST_METHOD); 
    conn.setRequestProperty("Content-Type",ApiConstants.CONTENT_TYPE);      
    conn.setRequestProperty("x-openrtb-version", ApiConstants.RTB_REQUEST_HEADER);  
    os = conn.getOutputStream(); // **Here is code of line that my Thread state is BLOCKED**
    os.write(input.getBytes());
    os.flush();

当我在生产环境中调试此问题时,我找到了 线程转储中的错误 错误:" pool-424-thread-7" #4082 prio = 5 os_prio = 0 tid = 0x00007f8510144800 nid = 0x5828正在等待监视器输入[0x00007f848b7f5000]    java.lang.Thread.State:BLOCKED(在对象监视器上 在上面的代码方法getOutputStream()行

我不知道为什么它会进入BLOCKING状态或任何其他实现来避免这种状态

非常感谢您的帮助。谢谢:)

0 个答案:

没有答案