Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
1111 of 1172 menu
◀ ▶

Метод executor

Метод executor класса HttpClient.Builder задает исполнителя (Executor), который будет использоваться для выполнения асинхронных HTTP-запросов. В параметр метода мы передаем объект Executor. Если исполнитель не задан, клиент создает собственный исполнитель по умолчанию. Метод возвращает тот же самый объект HttpClient.Builder, что позволяет строить цепочку вызовов.

Синтаксис

builder.executor(executor)

Пример

Давайте создадим HTTP-клиент с собственным исполнителем на основе пула из одного потока и выполним запрос:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); HttpClient client = HttpClient.newBuilder() .executor(executor) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com")) .GET() .build(); HttpResponse<String> res = client.send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(res.statusCode()); executor.shutdown(); } }

Результат выполнения кода:

200

Пример

Давайте выполним асинхронный запрос с исполнителем из четырех потоков и выведем код ответа:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newFixedThreadPool(4); HttpClient client = HttpClient.newBuilder() .executor(executor) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com")) .GET() .build(); CompletableFuture<HttpResponse<String>> future = client.sendAsync( request, HttpResponse.BodyHandlers.ofString() ); HttpResponse<String> res = future.get(); System.out.println(res.statusCode()); executor.shutdown(); } }

Результат выполнения кода:

200

Смотрите также

  • класс HttpClient.Builder,
    который создает и настраивает HTTP-клиент
  • метод build,
    который создает объект HttpClient
  • метод sendAsync,
    который отправляет запрос асинхронно
  • метод send,
    который отправляет запрос синхронно
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить