如何使用CompletableFuture返回值

use*_*121 5 java multithreading callable countdownlatch completable-future

我创建了一个示例,我想知道如何使用CompletableFuture?返回值?我也改变了CompletableFuture<Void> exeFutureList,CompletableFuture<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;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*art 10

Runnable只是一个run方法的接口,不返回任何东西.

因此runAsync,您使用的方法返回aCompletableFuture<Void>

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

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

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