2012-04-18 2 views
2

Простой вопрос:Java httpURLConnection threaded

Можно ли одновременно запросить НЕСКОЛЬКО httpURLConnection? Я создаю инструмент для проверки наличия страниц на определенном сервере, и на данный момент Java, похоже, ждет, пока каждый httpURLConnection не закончит работу над новым. Вот мой код:

public static String GetSource(String url){ 
String results = ""; 
try{ 
    URL SourceCode = new URL(url); 
    URLConnection connect = SourceCode.openConnection(); 
    connect.setRequestProperty("Host", "www.someserver.com"); 
    connect.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"); 
    connect.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
    connect.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7"); 
    connect.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
    connect.setRequestProperty("Keep-Alive", "115"); 
    connect.setRequestProperty("Connection", "keep-alive"); 
    BufferedReader in = new BufferedReader(new InputStreamReader(connect.getInputStream(), "UTF-8")); 
    String inputLine; 
    while ((inputLine = in.readLine()) != null){ 
    results += inputLine; 
    } 
    return results; 
}catch(Exception e){ 
    // Something's wrong 
} 
return results; 
} 

Спасибо большое!

+1

Я не вижу, где вы пытаетесь подключить более одного раза. –

+0

Я называю этот метод по каждой ссылке, но я пытаюсь назвать все сразу –

+0

. Прошивка проста, как предложено Мэттом Клоустером ниже, но предпочтительным способом было бы использовать ExecuterService Java 5 –

ответ

1

Да, возможно, код, который вы опубликовали, можно вызывать из нескольких потоков одновременно.

+0

, вы думаете, что это может быть смешанным результаты? –

+0

@DiegoSagrera Нет, не будет. Как вы его используете, его нить сохраняет. (Если вы вызываете только этот метод, и ничего другого делать нечего, о чем я не могу сказать, потому что вы не представили часть кода, которая показывает это) –

1

Вам нужно создать нить для каждого попадания. Создайте класс, который реализует Runnable, а затем поместите весь свой код подключения внутри метода run.

Затем запустите его с чем-то вроде этого ...

for(int i=0; i < *thread count*; i++){ 
    Thread currentThread = new Thread(*Instance of your runnable Class*); 
    currentThread.start(); 
} 
Смежные вопросы