【问题标题】:Do I need close inputStream after using getResponseCode (HttpUrlConnection)使用 getResponseCode (HttpUrlConnection) 后是否需要关闭 inputStream
【发布时间】:2021-02-10 07:12:50
【问题描述】:
当我只检查下面的响应代码时,是否需要关闭 inputStream?
URL u = new URL(url);
HttpUrlConnection con = (HttpUrlConnection) url.openConnection();
int statusCode;
try {
statusCode = con.getResponseCode();
} catch(Exception ex){}
【问题讨论】:
标签:
java
inputstream
httpurlconnection
【解决方案1】:
不,但是...
Java 有一个垃圾收集器。
这意味着:当没有活动线程引用对象时,Java 将销毁对象。
如果一个线程离开了一个方法,那么所有的对象都会很快从 RAM 中移除。
但是......直接关闭它们更干净。读起来更舒服。
在某些情况下,明确的关闭是必要的。否则,系统资源可能会“永远被阻塞”——但这几乎不依赖于所用库的实现。
【解决方案2】:
作为服务器http的客户端,当你关闭连接时,你的客户端和服务器http之间的链接也就关闭了。
因此,为了获得最佳实践,请关闭连接。
如果请求在服务器尚未返回响应时被客户端关闭,则服务器可以捕获Broken Pipe异常,然后服务器可以管理客户端请求的关闭连接。