5.1 āđāļĄāļāļāļ sendAsync()
āļāļļāļāļĒāļąāļāļŠāļēāļĄāļēāļĢāļāļŠāđāļāļāļģāļāļāđāļāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠāđāļāļĒāđāļāđ HttpClient āđāļāļĒāļāļāļāļīāļāļ°āļāļģāđāļāļŠāļēāļĄāļāļĢāļāļĩ
āļāļĢāļāļĩāđāļĢāļāļāļ·āļāļāļēāļĢāļĢāđāļāļāļāļāļāļ°āđāļāđāđāļ§āļĨāļēāļāļēāļāļĄāļēāļāđāļāđāļ āļāļēāļĢāļŠāđāļ/āļĢāļąāļāđāļāļĨāđ āļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļĩāđāļāļ°āđāļĢāļīāđāļĄāļāđāļāđāļĨāļ°āļāļģāđāļāļīāļāļāļēāļĢāđāļāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠ
āļāļĢāļāļĩāļāļĩāđāļŠāļāļāļāļ·āļāļāļļāļāļāđāļāļāļŠāđāļāļāļģāļāļāļāđāļāļĒāļĄāļēāļāđāļĨāļ°āđāļĄāđāļāđāļāļāļāļēāļĢāļĢāļāļāļēāļĢāļāļāļāļāļĨāļąāļāļāļēāļāļāļģāļāļāļāđāļāļāļŦāļāđāļēāļāđāļāļāļāļĩāđāļāļ°āļŠāđāļāļāļģāļāļāļāļąāļāđāļ
āđāļĨāļ°āļŠāļļāļāļāđāļēāļĒ āļāļĢāļāļĩāļāļĩāđāļŠāļēāļĄ - āļāļĨāļĨāļąāļāļāđāļāļāļāļāļģāļāļāļāļāļāļāļļāļāđāļĄāđāļŠāļģāļāļąāļāļŠāļģāļŦāļĢāļąāļ āļāļļāļ āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļ āļāļļāļāļāđāļēāļĒāļ āļēāļāļŦāļāđāļēāļāļāļāļāļāļāļļāļāļāļēāļāļĩāļĨāļ°āļāļĢāļąāđāļāđāļĨāļ°āļŠāđāļāđāļāļĒāļąāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ āļāļąāđāļāļāļ·āļ āļāļĢāļĢāļāļ°āļāļāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāļāļļāļāļāļ°āļāļ·āļāļ§āđāļēāļĄāļĩāļāļģāļāļāļāļģāļāļ§āļāļĄāļēāļāđāļĨāļ°āđāļāđāļēāļāļķāļāđāļĄāđāđāļāđāļāļąāđāļāļŦāļĄāļ āļāļēāļāļāļąāđāļāļāļ°āļŠāļ°āļāļ§āļāđāļāļāļēāļĢāļāļģāļāļēāļāļāļēāļĄāļŦāļĨāļąāļāļāļēāļĢ - āļŠāđāļāđāļĨāļ°āļĨāļ·āļĄ
āđāļāļāļēāļĢāļŠāđāļāļāļģāļāļāđāļāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠ āļāļļāļāļāđāļāļāđāļĢāļĩāļĒāļāđāļāđāđāļĄāļāļāļsendAsync()
āļāļāļ§āļąāļāļāļļāļāļāļāļāļĨāļēāļŠ HttpClient āđāļĄāļāļāļāļāļĩāđāļāļāļāļāļąāļāļāļĩāđāļĨāļ°āļŠāđāļāļāļ·āļāđāļāļĨāđCompletableFuture<HttpResponse>
. āļāđāļ§āļĒāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđ āļāļļāļāļāļ°āļŠāļēāļĄāļēāļĢāļāļāļīāļāļāļēāļĄāđāļāđāļ§āđāļēāđāļĄāļ·āđāļāđāļāļāļĩāđāļāļģāļāļāđāļāđāļĢāļąāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļĢāļīāļ āļĢāļ§āļĄāļāļķāļāđāļĢāļĩāļĒāļāđāļāđāļĢāļŦāļąāļŠāļāļēāļāļāļĒāđāļēāļāļŦāļĨāļąāļāļāļēāļāļāļĩāđāļāļģāļāļāđāļŠāļĢāđāļāļŠāļīāđāļ āļāļąāļ§āļāļĒāđāļēāļ:
HttpClient client = HttpClient.newBuilder().build();
CompletableFuture<HttpResponse<String>> response = client.sendAsync(
request,
HttpResponse.BodyHandlers.ofString()
);
āļ§āļīāļāļĩāļāļēāļĢsendAsync()
āļŠāđāļāļāļ·āļāļ§āļąāļāļāļļCompletableFuture
āļāļĩāđāļĄāļĩ HttpResponse āļ āļēāļĒāđāļāļāļķāđāļāļĄāļĩāļŠāļāļĢāļīāļāļāļĩāđāđāļāļīāļĢāđāļāđāļ§āļāļĢāđāļāļ°āļŠāđāļāļāļ·āļ
5.2 āđāļĄāļāļāļ executor() ExecutorService
āļāļāļāļāļēāļāļāļĩāđ HttpClient āļĒāļąāļāđāļŦāđāļāļļāļāļŠāđāļāļāđāļēāļāđāļāļĒāļąāļāļĄāļąāļExecutorService
(āļāļĨāļļāđāļĄāļāļāļāđāļāļĢāļ) āļāļĩāđāļāļ°āđāļāđāđāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļēāļĄāļāļģāļāļāđāļāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠ āļāļąāļāļāļĩāđāļāļĢāļīāļ āđāļāđāļāļāļāļĨāļīāđāļāļāļąāļ Java āļāļąāđāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ āļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļĩāđāļāļ°āļāļģāđāļŠāļĄāļ
āļāđāļēāļĒāļāļĩāđāļŠāļļāļ āļŦāļēāļāļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āļāļģāļāļāļāļĩāđāļŠāđāļāđāļāļĒāļąāļ API āļāļāļāļāļļāļ āļāļļāļāļāļ°āđāļāļīāļāđāļāđāļāļģāļāļāđāļāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠāļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢāđāļāļāļĩāđāļāļ·āđāļ āđāļŠāļāļāļ§āđāļēāļāļļāļāļāļ°āļĄāļĩāđāļāļĢāļāđāļĄāđāđāļāļĩāļĒāļāļāļ āļāļąāļ§āļāļĒāđāļēāļ:
ExecutorService executorService = Executors.newFixedThreadPool(2);
CompletableFuture<HttpResponse<String>> response1 = HttpClient.newBuilder()
.executor(executorService)
.build()
.sendAsync(request, HttpResponse.BodyHandlers.ofString());
CompletableFuture<HttpResponse<String>> response2 = HttpClient.newBuilder()
.executor(executorService)
.build()
.sendAsync(request, HttpResponse.BodyHandlers.ofString());
āļŦāļēāļāđāļĄāđāđāļāđāļāļąāđāļāļāđāļēāđāļāļĢāļāļāļđāļĨ āļāđāļēāļāļĩāļāļāļĨāļāđāļāļ·āļjava.util.concurrent.Executors.newCachedThreadPool()