何时使用 Java 9 中 CompletableFuture 的 delayedExecutor() 方法?
javaobject oriented programmingprogramming更新于 2025/8/31 4:28:17
Java 9 中的 CompletableFuture 类中添加了 delayedExecutor() 方法。CompletableFuture 定义了两个 delayedExecutor() 的重载方法:第一个方法从 default Executor 对象返回一个 Executor 对象,CompletableFuture 对象使用该对象在延迟后执行任务,并且 new Executor 对象可以执行任务,而第二个方法也返回一个 Executor 对象,但是我们在延迟后将其传递给此方法,并且 new Executor 对象也可以执行任务。
语法
public static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor)public static Executor delayedExecutor(long delay, TimeUnit unit)
示例
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class DelayedExecutorMethodTest {
public static void main(String args[]) throws InterruptedException, ExecutionException {
CompletableFuture<String> future = new CompletableFuture<>();
future.completeAsync(() -> {
try {
System.out.println("inside future: processing data...");
return "tutorialspoint.com";
} catch(Throwable e) {
return "not detected";
}
}, CompletableFuture.delayedExecutor(3, TimeUnit.SECONDS))
.thenAccept(result -> System.out.println("accept: " + result));
for(int i = 1; i <= 5; i++) {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("running outside... " + i + " s");
}
}
}
输出
running outside... 1 s running outside... 2 s inside future: processing data... accept: tutorialspoint.com running outside... 3 s running outside... 4 s running outside... 5 s
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

