在 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 方法等待 futuresleepFuture 都完成,然后打印一条 "All tasks completed" 的消息。

运行上述代码,会输出以下结果:

Sleeping for 2 seconds
Task completed
All tasks completed

可以看到,在 future 执行完毕之前,sleepFuture 会先执行,并在 2 秒后打印出消息。

Java CompletableFuture 模拟延时执行 - 使用 delayedExecutor

原文地址: https://www.cveoy.top/t/topic/fz20 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录