Я делаю библиотеку в Java, библиотека для вызова внешнего сервиса API.Для этого я использую AsyncHttpClient
Некоторая часть кода:
public CompletableFuture<Optional<TokensResponse>> clientCredentialsGrant(String clientId, String clientSecret, String deviceId, Optional<String> scope) {
AsyncHttpClient asyncHttpClient = asyncHttpClient();
BoundRequestBuilder requestBuilder = asyncHttpClient
.preparePost(host + "/oauth2/token")
.addFormParam("grant_type", "client_credentials")
.addFormParam("device_id", deviceId)
.addFormParam("client_id", clientId)
.addFormParam("client_secret", clientSecret);
if (scope.isPresent()) {
requestBuilder.addFormParam("scope", scope.get());
}
return runRequestWithTokenResponse(requestBuilder, asyncHttpClient);
}
, и если какой-то проект, который использует эту библиотеку, я запусту, например, 1000 запросов, даже еслиони закончатся, я закончу с множеством повешенных нитей.После достижения запроса я делаю:
asyncHttpClient.close();
Могу ли я определить какой-нибудь пул потоков для использования?
Как правило, AHC, как правило, работает хуже, если вы создаете новый клиент для каждого запроса, так как он создает новые потоки и пулы соединений для каждого
Это то, чем я являюсьна самом деле делает ..