Как использовать потоки из пула потоков для каждого httprequest в Java? - PullRequest
2 голосов
/ 01 декабря 2011

Мне нужно создать пул потоков фиксированного размера и использовать поток для каждого http-запроса.Может кто-нибудь указать, как это сделать?

Заранее спасибо

Код

    HttpGet httpGet = new HttpGet(url);
    HttpClient  httpClient =  new DefaultHttpClient();
    HttpResponse httpResponse = httpClient.execute(httpGet);
    return httpResponse;

Здесь мне нужно использовать поток из пула потоков для каждого httpresponse

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Вы, вероятно, должны создать FixedThreadExecutor http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool(int)

затем создайте Runnable задач http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html

и запустить их в исполнителе с помощью функции sumbit() или executeAll() http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html

Может быть, вы также должны выполнить HttPRequest в теме. И пометить это как домашнее задание (оно пахнет как один)

0 голосов
/ 01 декабря 2011

Вы можете использовать Executors и передать свой собственный Runnable, который обработает ваш httpResponse. Фрагмент кода:

public class MyHttpResponseHandler implements Runnable {

    private HttpResponse httpResponse = null;

    public MyHttpResponseHandler(HttpResponse httpResponse){
        this.httpResponse = httpResponse;
    }
    @Override
    public void run() {
        //Do something with the httpResponse
    }
}

void processHttpResponse(){
    HttpGet httpGet = new HttpGet(url);
    HttpClient  httpClient =  new DefaultHttpClient();
    HttpResponse httpResponse = httpClient.execute(httpGet);
    ExecutorService executor = Executors.newFixedThreadPool(10);
    executor.execute(new MyHttpResponseHandler(httpResponse));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...