6

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

请让我知道如何使用 CompletableFuture 返回值。

代码

    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;
        }

    }
}
4

1 回答 1

11

Runnable只是一个带有run不返回任何内容的方法的接口。

因此runAsync,您使用的方法返回一个CompletableFuture<Void>

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

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

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

于 2015-05-23T15:06:49.637 回答