Java CompletableFuture 模拟延时执行 - 使用 delayedExecutor
在 Java 的 CompletableFuture 中,可以使用 CompletableFuture.delayedExecutor 方法来模拟延时执行。该方法接受一个延迟时间和一个时间单位作为参数,并返回一个 Executor 对象,该对象会在指定的延迟时间后执行任务。
以下是一个使用 CompletableFuture 模拟延时的示例代码:
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class CompletableFutureSleepExample {
public static void main(String[] args) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
Thread.sleep(3000); // 模拟耗时操作
System.out.println('Task completed');
} catch (InterruptedException e) {
e.printStackTrace();
}
});
CompletableFuture<Void> sleepFuture = CompletableFuture.delayedExecutor(2, TimeUnit.SECONDS)
.execute(() -> System.out.println('Sleeping for 2 seconds'));
CompletableFuture.allOf(future, sleepFuture).join();
System.out.println('All tasks completed');
}
}
在上述代码中,首先创建了一个 CompletableFuture 对象 future,它会在后台线程中执行一个耗时操作(模拟耗时 3 秒)。
然后,使用 CompletableFuture.delayedExecutor 方法创建了一个延迟 2 秒执行的 CompletableFuture 对象 sleepFuture,它会在 2 秒后打印一条消息。
最后,使用 CompletableFuture.allOf 方法等待 future 和 sleepFuture 都完成,然后打印一条 "All tasks completed" 的消息。
运行上述代码,会输出以下结果:
Sleeping for 2 seconds
Task completed
All tasks completed
可以看到,在 future 执行完毕之前,sleepFuture 会先执行,并在 2 秒后打印出消息。
原文地址: https://www.cveoy.top/t/topic/fz20 著作权归作者所有。请勿转载和采集!