简体   繁体   中英

How to return a value using CompletableFuture

I created an example, i want to know how can I return a value using the CompletableFuture ? I also changed the CompletableFuture<Void> exeFutureList to be CompletableFuture<Integer> exeFutureList but eclipse always suggest to set it back to Void.

Please let me know how to return value using CompletableFuture.

Code :

    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 is just an interface with a run method that does not return anything.

Therefore the runAsync method that you are using returns a CompletableFuture<Void>

You need to submit a Supplier , using the supplyAsync method:

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

You can also create your own Supplier<Integer> implementation instead of using lambda.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM