2013-04-14 2 views
6

Я использую org.apache.http.client.HttpClient. У меня есть вопрос, который касается использования этого класса.org.apache.http.client.HttpClient - по одному запросу?

Должен ли я создать новый HttpClient за запрос (например, потому что это легкий объект), или лучше использовать уникальный экземпляр для множества HTTP-запросов (например, потому что создание/удаление дорого)? Если необходимо использовать только один экземпляр HttpClient, то есть HttpClient потокобезопасный (например, он может обрабатывать множество HTTP-запросов одновременно) или предпочтительнее в этом случае создать пул HttpClient s?

На самом деле, я создаю новый HttpClient для каждого запроса. Я подозреваю, что я должен создать уникальный экземпляр, который будет закрыт в конце использования моего приложения, используя getConnectionManager().shutdown(), но я не знаю, могу ли я поддерживать параллелизм на основе потоков.

+0

Подсказка - 'DefaultHttpClient' поставляется с аннотацией' @ ThreadSafe'. –

+0

О, хорошо ... поэтому я утверждаю, что он должен обрабатывать несколько HTTP-запросов за раз. –

+0

Да. [Подробнее здесь] (http://hc.apache.org/httpclient-3.x/performance.html). Взгляните на «Повторное использование экземпляра HttpClient». –

ответ

3

DefaultHttpClient отмечена аннотацией @ThreadSafe, так что да, вы можете использовать ее в потоковом безопасном режиме. Документация по производительности из HTTPClient также активно использует recommends, используя один экземпляр, где это возможно.

+0

Благодарю вас за ваше терпение и исчерпывающий ответ. Я собираюсь реорганизовать код! –

+0

Добро пожаловать. –