我需要在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);
}
Run Code Online (Sandbox Code Playgroud)
我正在看CompletableFutures,像这样:
CompletableFuture.supplyAsync(this::doSomethingNoWait)
.thenApply(this::logSomeMessage);
Run Code Online (Sandbox Code Playgroud)
我想知道那是正确的方法吗?在doSomethingNoWait完成必须做的事情之前,响应会返回给用户吗?
谢谢!