【发布时间】:2011-11-27 06:27:59
【问题描述】:
背景
我在客户端使用HttpURLConnection 在 HTTP 流(服务器推送)情况下使用响应。虽然服务器可以通过关闭响应来关闭连接,但客户端也需要能够做到这一点。
问题
客户端在单独的线程中处理InputStream,如下所示:
@Override
public void run() {
try {
for (int b = in.read(); b >= 0; b = in.read()) {
char c = (char) b;
// Do something with the character
// ...
}
}
catch (IOException e) {
}
}
因此,当我从发起连接的线程调用HttpURLConnection.disconnect() 时(重要的信息是它与处理输入的线程不同),该调用将无限期挂起。我什至把它留了一夜,它仍然挂着。甚至拨打Thread.interrupt() 也无济于事。
建议?
【问题讨论】: