Було те саме питання. Інші відповіді, здається, не стосуються того, чому насправді потрібно close ()? Крім того, Оп, здається, намагається з'ясувати, який найкращий спосіб працювати з HttpClient та ін.
За словами Апача :
Крім того, відносини йдуть наступним чином:
HttpClient
(інтерфейс)
реалізує:
CloseableHttpClient
- ThreadSafe.
DefaultHttpClient
- ThreadSafe АЛЕ застарілий , використовуйте HttpClientBuilder
замість цього.
HttpClientBuilder
- НЕ ThreadSafe, АЛЕ створює ThreadSafe CloseableHttpClient
.
- Використовуйте для створення CUSTOM
CloseableHttpClient
.
HttpClients
- НЕ ThreadSafe, АЛЕ створює ThreadSafe CloseableHttpClient
.
- Використовуйте для створення DEFAULT або MINIMAL
CloseableHttpClient
.
Кращий спосіб згідно Apache:
CloseableHttpClient httpclient = HttpClients.createDefault();
Приклад, який вони наводять, міститься httpclient.close()
в finally
реченні, а також використовує ResponseHandler
також.
Як альтернатива, спосіб роботи mkyong також є трохи цікавим:
HttpClient client = HttpClientBuilder.create().build();
Він не показує client.close()
дзвінок, але я вважаю, що це необхідно, оскільки client
все ще є екземпляром CloseableHttpClient
.