gpt4 book ai didi

java - CompletableFuture : after async call, 当前线程的处理结果

转载 作者:行者123 更新时间:2023-11-29 08:34:55 25 4
gpt4 key购买 nike

我想了解 Java 8 中的 CompletableFuture 接口(interface)。我当前的代码是:

CompletableFuture.supplyAsync(() -> wachtwoordBijwerken(gebruikersnaam, wachtwoord))
.thenAccept(this::saveOrUpdateGebruiker)
.exceptionally(e ->
{
log.error("Fout bij het bijwerken van wachtwoord voor gebruiker: " + gebruikersnaam, e);
return null;
});

我希望调用 saveOrUpdateGebruiker() 在新创建线程中的异步调用完成后在主线程中运行。然而,调用仍在另一个线程中,这导致底层 hibernate 实现出现问题。

有没有一种方法可以使用 CompletableFuture 进行非阻塞异步调用,并且仍然能够在当前线程中使用结果?

最佳答案

不会自动没有。当使用 supplyAsyncthenAccept 等执行 CompletableFuture 提供的操作时,它们都由线程池中的线程执行。这允许您执行“即发即弃”操作,并在您认为合适的时候继续在主线程中工作。

如果您想在 CompletableFuture 完成后在当前线程中执行工作,您需要等待并使用 isDone() 和/或检查其是否完成get() 方法。

但是,如果您这样做,则使用 CompletableFuture 与普通的 Future(例如 FutureTask)相比没有任何优势。

关于java - CompletableFuture : after async call, 当前线程的处理结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com