Було те саме питання. Інші відповіді, здається, не стосуються того, чому насправді потрібно 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.