何时在 Java 9 中使用 CompletableFuture 的 delayedExecutor() 方法?
delayedExecutor()方法已添加到了 Java 9 中的CompletableFuture类。CompletableFuture定义了delayedExecutor()的两个重载方法:第一个方法从默认Executor对象返回一个 Executor 对象,该CompletableFuture对象在延迟后使用该对象执行任务,并且new Executor对象可以执行任务,而第二个方法也返回一个 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
iOS
HTML
CSS
Android
Python
C 编程语言
C++
C#
MongoDB
MySQL
Javascript
PHP