0

我用来java.net.URL从我设置的互联网上获取 htmlkeepAlivemaxConnections

System.setProperty("http.keepAlive", "true");
System.setProperty("http.maxConnections","600");

然后我开始从互联网上获取 html,其中包含几个线程,例如:

protected static String content(URLConnection conn) throws IOException {
    try (InputStream in = getInputStream(conn)) {
        //bla bla bla...
        // get bytes from in
        return new String(bytes, charset);
    }
}

但是我发现当我运行这个程序一段时间(5-8小时)时,目标网站(用于测试)是建立760个连接?

那么,我应该以及如何手动关闭 URLConnection ?

4

2 回答 2

0

我从未见过使用其 API 显式关闭连接的方法。但是,您可以使用方法设置连接读取超时setReadTimeout。这需要在建立连接之前设置。

于 2012-09-28T01:52:45.937 回答
0

老实说,您可能会尝试使用 Socket/ServerSocket 而不是 URLConnection - 使用 Sockets,您可以在选择时关闭套接字,它可以让您更直接地控制何时打开、关闭、读取、并写入连接。查看 API:

http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html

于 2012-09-28T01:19:59.880 回答