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.