2008-11-07 121 views
63

什么时候java的放手一连接到一个URL的?我没有看到在任一网址close()方法或URLConnection的所以它尽快释放连接的请求完成?我主要要求查看是否需要在异常处理程序中进行清理。在Java中,何时URL连接关闭?

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

切勿使用赶上(例外),如果一个特定的异常被抛出,赶上每个人在自己的第 – OscarRyz 2009-05-26 20:36:14

+3

或至少赶上最后的异常(如果没有其他的捕捉异常)。 – jeremy 2012-07-18 09:01:47

回答

41

它取决于协议中指定的特定协议。有些保持持久连接,其他连接在您的呼叫在连接给出的输入或输出流中关闭时关闭它们的连接。但除了记住关闭从URLConnection打开的流之外,没有别的办法可以做。

从的Javadoc java.net.URLConnection中

调用关闭()在 的InputStream或OutputStream的一个请求后 的URLConnection的方法可以释放与此 实例相关联 网络资源,除非特定的协议 规格为它指定不同的 行为。

39

如果转换为HttpURLConnection,则有disconnect()方法。如果连接空闲,它可能会立即断开连接。没有保证。