Как вернуть значение с помощью 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>
вместо использования лямбды.