在 Java 中,URL 连接何时关闭?

2022-08-31 12:02:59

Java什么时候会放弃与URL的连接?我在URL或URLConnection上都没有看到close()方法,那么它会在请求完成后立即释放连接吗?我主要要求查看是否需要在异常处理程序中进行任何清理。

try {
  URL url = new URL("http://foo.bar");
  URLConnection conn = url.openConnection();
  // use the connection
}
catch (Exception e) {
  // any clean up here?
}

答案 1

如果强制转换为 HttpURLConnection,则存在一个 disconnect() 方法。如果连接处于空闲状态,它可能会立即断开连接。无保证。


答案 2

这取决于协议中指定的特定协议。有些保持持久连接,有些则当您的呼叫在连接给定的输入或输出流中关闭时关闭其连接。但是,除了记住关闭从URLConnection打开的流之外,您还无能为力。

From the javadoc for java.net.URLConnection

在请求后调用 URLConnection 的 InputStream 或 OutputStream 上的 close() 方法可能会释放与此实例关联的网络资源,除非特定的协议规范为其指定了不同的行为。