gpt4 book ai didi

java - 仅等待响应时 Java 异步客户端的优势?

转载 作者:行者123 更新时间:2023-12-01 16:15:35 27 4
gpt4 key购买 nike

如果您不想在等待响应之前执行任何操作,那么使用异步 Web 客户端有什么优势?

我们假设这里是 Java,一些伪代码

Response response = syncClient.post(); //blocks
processResponse(response);

对比

CompletableFuture<Response> responseFuture = asyncClient.post();
Response response = responseFuture.get(); //blocks
processResponse(response);

除了立即调用阻塞 get() 之外,我没有做任何其他事情。在这两种情况下,处理响应的线程是否都被阻塞?

最佳答案

如果您的调用应用程序没有任何事情可做并且不是多线程的,那么就没有太大的优势。

但在传统的多线程应用程序中,使用异步(或非阻塞)请求允许共享单个线程,这样您实际上可以避免创建多个线程。例如,假设您有 10 个代码流同时运行。传统上,我们会创建 10 个独立的线程。但是,如果所有线程都进行非阻塞调用,则可以在 1 个线程中运行所有 10 个流。每当发出传统的阻塞请求(调用 API 或调用 DB)时,您不必在那里等待,而是可以向其传递完成后要执行的操作的代码,从而允许在 1 个线程中处理 10 个流。恕我直言,这是非阻塞代码的主要用例。与其说让你的一个流做其他事情。

关于java - 仅等待响应时 Java 异步客户端的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62398520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com