小编mal*_*ock的帖子

具有CompletableFutures的异步非阻塞任务

我需要在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完成必须做的事情之前,响应会返回给用户吗?

谢谢!

multithreading java-8 completable-future

6
推荐指数
1
解决办法
1435
查看次数