在Java中维护大量连接的最佳方法

时间:2011-08-08 07:13:29

标签: java multithreading http tcp

我想知道这是在多线程应用程序中维护大量小TCP连接的最佳解决方案,而不会在一段时间后锁定。

假设我们必须在多线程中访问许多http网站(如不同域,服务器等上的~200 000)。最安全的连接是最好的(我的意思是大多数锁定阻力,而不是多线程锁定,但TCP连接“不会对任何事情做出反应”)。 HttpURLConnection& BufferedReader使用setted连接和读取超时来完成工作?当我使用简单的解决方案时,我看到了这一点:

URL url = new URL( xurl );
BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream() ) );

所有线程在2-3小时后被锁定/死亡。

最好让10个常量线程一直运行并请求URL从主线程获取或者更好地为每个url创建一个线程,然后如果它在一段时间后不响应则以某种方式终止它? (如何杀死子线程?)

1 个答案:

答案 0 :(得分:1)

如果它将是HTTP连接,我真的怀疑你可以缓存它们。因为保持HTTP连接不仅在客户端,所以它也需要服务器端支持。大多数情况下,服务器将在超时期限(在服务器中配置)后关闭连接。因此,请检查服务器端配置的最大超时时间以及要保持连接缓存的时间。