【发布时间】:2019-01-24 12:33:12
【问题描述】:
我需要在 Java 8 中创建一个异步、非阻塞任务,我想使用 CompletableFutures 但我不确定它是否满足我的需求。
为了简化案例,假设我们有一个 API 可以为用户检索一些数据,但同时想要启动一个单独的任务来执行一些操作。我不需要也不想等待这个单独的任务完成,我想立即将响应发送给用户。模拟代码示例:
public Response doSomething(params) {
Object data = retrieveSomeData(params);
// I don't want to wait for this to finish, I don't care if it succeeds or not
doSomethingNoWait(data);
return new Response(data);
}
我在看 CompletableFutures,类似这样的:
CompletableFuture.supplyAsync(this::doSomethingNoWait)
.thenApply(this::logSomeMessage);
我想知道这是否是正确的方法?响应会在 doSomethingNoWait 完成它必须做的事情之前返回给用户吗?
谢谢!
【问题讨论】:
标签: multithreading java-8 completable-future