2013-04-14 15 views
6

Używam org.apache.http.client.HttpClient. Mam pytanie, które dotyczy użycia tej klasy.org.apache.http.client.HttpClient - po jednym na żądanie?

Czy mogę utworzyć nowe HttpClient dla każdego żądania (np. Z powodu lekkiego obiektu) lub lepiej użyć unikalnej instancji na wiele żądań http (np. Ponieważ tworzenie/usuwanie jest kosztowne)? Jeśli konieczne jest użycie tylko jednej instancji HttpClient, jest ona bezpieczna dla wątku (np. Może obsługiwać wiele żądań http w tym samym czasie) lub w tym przypadku najlepiej jest utworzyć pulę o wartości HttpClient?

Właściwie, tworzę nowy HttpClient na żądanie. Podejrzewam, że muszę utworzyć unikalną instancję, która zostanie zamknięta pod koniec korzystania z mojej aplikacji za pomocą getConnectionManager().shutdown(), ale nie wiem, czy uda mi się utrzymać równoległość opartą na wątkach.

+0

Wskazówka - 'DefaultHttpClient' pochodzi z adnotacją' @ ThreadSafe'. –

+0

Och, miło ... więc twierdzę, że powinien obsługiwać wiele żądań http na czas. –

+0

Tak. [Więcej tutaj] (http://hc.apache.org/httpclient-3.x/performance.html). Zobacz "Ponownie użyj instancji HttpClient". –

Odpowiedz

3

Numer DefaultHttpClient jest oznaczony adnotacją @ThreadSafe, dzięki czemu można go używać w sposób bezpieczny dla wątków. Dokumentacja wydajności od HTTPClient również aktywnie recommends przy użyciu pojedynczego wystąpienia tam, gdzie to możliwe.

+0

Dziękuję za cierpliwość i wyczerpującą odpowiedź. Zamierzam zreorganizować kod! –

+0

Nie ma za co. –