我用java.net.URL
从互联网上获取网页,我设置了keepAlive
和maxConnections
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?
发布于 2012-09-28 09:52:46
我从未见过使用它的API显式关闭连接的方法。但是,您可以使用setReadTimeout
方法设置连接读取超时。这需要在建立连接之前进行设置。
发布于 2012-09-28 09:20:00
老实说,您可以尝试使用Socket/ServerSocket而不是URLConnection -使用socket,您可以在选择的时候关闭socket,并且它为您提供了对何时打开、关闭、读取和写入连接的更详细的控制。查看API:
http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html
https://stackoverflow.com/questions/12632250
复制相似问题