私は、(たとえば)5つのhttp接続(異なるIPへの)のhttp接続時間を計算するJavaプログラムを作成しています。
最初のシナリオは、スレッド化せずに、プログラムがhttpサーバーを1つずつ接続してテストすることです。つまり、1つのサーバーのテストが終了したら、別のサーバーに進みます。このシナリオでは、かかる時間は非常に長くなります。さらに、タイムアウトが正しく機能していません。たとえば、
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つの接続を成功させることさえできません。
今私の質問は、複数のスレッドを使用して複数の接続を確立できますか?答えが「はい」の場合、上記の問題を回避するために私が注意しなければならないことは何ですか?
感謝。
*追加情報* 1)プロキシ接続速度を計算しているので、接続はプロキシ接続です。2)私が作成したスレッドは約100です。それでいいと思いますよね?