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.