gpt4 book ai didi

java - 了解 CompletableFuture::runAsync

转载 作者:搜寻专家 更新时间:2023-10-31 20:00:25 26 4
gpt4 key购买 nike

我刚刚读了the documentation关于 CompletableFuture::runAsync 并且被解释弄糊涂了。这是那里写的:

Returns a new CompletableFuture that is asynchronously completed by a task running in the given executor after it runs the given action.

据我所知,CompletableFuture 看起来像 Future,它可以“注册”某种回调并在给定操作完成后隐式调用它们。

考虑到这一点,让我们考虑以下代码:

ExecutorService threadsPool;
Runnable r;
//...
CompletableFuture.runAsync(r, threadsPool);

在这段代码中,我们注册了要在给定的ThreadPool 中异步执行的Runnable

但是由任务异步完成的CompletableFuture是什么意思。任务如何使 CompletableFuture 完成...?这对我来说意义不大。

最佳答案

CompletableFuture 中,runAsync 调用了以下代码。

static CompletableFuture<Void> asyncRunStage(Executor e, Runnable f) {
if (f == null) throw new NullPointerException();
CompletableFuture<Void> d = new CompletableFuture<Void>();
e.execute(new AsyncRun(d, f));
return d;
}

AsyncRun 是异步执行的任务,它将在运行 Runnable f 之后异步完成 CompletableFuture d。我不会理会这里的代码,因为它的信息量不大,它只是通过调用其 postComplete() 方法(包私有(private)的方法)来完成 d ).

关于java - 了解 CompletableFuture::runAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40173509/

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