如果我得到 ListenableFuture<X>
使用 AsyncHttpClient
调用外部系统时, 我调用 get()
立即 - 当前线程是否会等到异步线程准备好响应?如果这是真的,那么使用 AsyncHttpClient
有什么好处? ?
AsyncHttpClient httpClient = new AsyncHttpClient();
ListenableFuture<Response> futureResponse = httpClient.execute(url, payload, headers);
// If this is immediately on next line, am I getting any benefit?
Response response = futureResponse.get();
最佳答案
根据 Future
ListenableFuture
实现的接口(interface)契约,get()
返回 Future
的结果,因此必须阻塞直到必要的计算完成。
在 Future
调用之后立即执行 get()
不会给您带来任何好处,如果系统 A 使用异步请求调用系统 B,紧接着调用 get 将导致系统A等待。
如果您希望系统 A 在 B 处理请求时继续做事,您可能希望向 ListenableFuture 添加一个 Callback 或 Listener,以便 A 可以在 B 回来时做它需要做的事情(做的能力事实上,这就是 ListenableFuture
存在的原因。
关于java - 获取ListenableFuture后立即get(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39293825/