我在Spring WebMVC控制器中有这两个片段:
第一:thenApplyAsync
@RequestMapping(value = {"/index-standard"}, method = RequestMethod.GET)
public CompletableFuture<String> indexStandard(Model model) {
return projectService
.findMine(getCurrentApplicationUser())
.thenApplyAsync((result) -> {
model.addAttribute("projects", result);
return "/projectmanagement/my/index";
});
}第二:join()
@RequestMapping(value = {"/index-nonstandard"}, method = RequestMethod.GET)
public String indexNonStandard(Model model) {
CompletableFuture<Iterable<ProjectDto>> mine = projectService.findMine(getCurrentApplicationUser());
CompletableFuture.allOf(mine).join();
model.addAttribute("projects", mine.join());
return "/projectmanagement/my/index";
}据我理解:
第一种选择:
join()等待CompletableFuture代码的执行。。
第二种选择:
这些选择有什么不同?
那么,是否有更好的解决方案(第一或第二)?
两种选择都有效。
发布于 2022-10-28 09:43:34
.join()将阻止线程的执行,并等待结果就绪。通常,在编写异步应用程序时,这不是人们想要的行为。
https://stackoverflow.com/questions/74233331
复制相似问题