我正在编写一个Java程序来计算(比如说)5个http连接(到不同的IP)的http连接时间。
第一种情况是,在没有线程的情况下,程序一个接一个地连接和测试 http 服务器,这意味着当完成一个服务器测试然后继续另一个服务器。在这种情况下,花费的时间非常长。而且,超时没有正常工作,例如我设置了
setConnectTimeout(5 * 1000);
setReadTimeout(5 * 1000);
但时间回来了
long starTime = System.currentTimeMillis();
c.connect();
String line;
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
while ((line = in.readLine()) != null){
page.append(line);
elapseTime = System.currentTimeMillis() - starTime;
可以超过 5 秒,有些甚至可以达到 30 秒(但我只将 5 秒设置为超时)。
因此,我将实现设为多线程。但结果更加荒谬。我现在什至无法成功连接。
现在我的问题是,我们可以使用多线程建立多个连接吗?如果答案是肯定的,我必须注意什么才能避免上述问题?
感谢。
*额外信息* 1) 我正在计算代理连接速度,所以,是的,连接是代理连接。2) 我创建的线程数在 100 左右。我认为应该没问题吧?