如何使用 CompletableFuture return 一个值

How to return a value using CompletableFuture

我创建了一个示例,我想知道如何使用 CompletableFuture return 一个值?我还将 CompletableFuture<Void> exeFutureList 更改为 CompletableFuture<Integer> exeFutureList 但 eclipse 总是建议 将其设置回 Void。

请告诉我如何使用 CompletableFuture return 值。

代码:

    public class MainClass {

    static ExecutorService exe = null;
    static CompletableFuture<Void> exeFutureList = null;

    public static void main(String[] args) {
        exe = Executors.newFixedThreadPool(1);
        exeFutureList = CompletableFuture.runAsync(new RunClass(8), exe);
    }

    static class RunClass implements Runnable {

        private int num;

        public RunClass(int num) {
            // TODO Auto-generated constructor stub
            this.num = num;
        }

        public void run() {
            // TODO Auto-generated method stub
            this.num = this.num + 10;
        }

    }
}

Runnable 只是一个带有 run 方法的接口,它没有 return 任何东西。

因此,您正在使用的 runAsync 方法 return 是 CompletableFuture<Void>

您需要提交一个Supplier,使用supplyAsync方法:

final int arg = 8;
CompletableFuture<Integer> f = CompletableFuture.supplyAsync(() -> {
    return arg + 10;
}, exe);

您也可以创建自己的 Supplier<Integer> 实现而不是使用 lambda。