Как вернуть значение с помощью CompletableFuture
Я создал пример, я хочу знать, как я могу вернуть значение, используя CompletableFuture ? Я также изменил CompletableFuture<Void> exeFutureList на CompletableFuture<Integer> exeFutureList , но eclipse всегда предлагает
установите его обратно в пустоту.
Пожалуйста, дайте мне знать, как вернуть значение с помощью 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;
}
}
}
1 ответ:
Runnableэто просто интерфейс с методомrun, который ничего не возвращает.Поэтому
runAsyncметод, который вы используете возвращает aCompletableFuture<Void>Вам нужно отправить
Supplier, используяsupplyAsyncметод:final int arg = 8; CompletableFuture<Integer> f = CompletableFuture.supplyAsync(() -> { return arg + 10; }, exe);Вы также можете создать свою собственную реализацию
Supplier<Integer>вместо использования лямбды.