CompletableFuture runAsyn c против supplyAsyn c, когда выбрать один из других? - PullRequest
3 голосов
/ 11 февраля 2020

Каково обоснование выбора одного над другим? Единственное отличие, которое я могу вывести после прочтения документации , заключается в том, что runAsyn c принимает Runnable в качестве входного параметра, а supplyAsyn c принимает Поставщика в качестве входного параметра.

This * В статье 1006 * stackoverflow обсуждается мотивация использования поставщика с методом supplyAsyn c, но он по-прежнему не отвечает, когда отдавать предпочтение одному из них.

1 Ответ

7 голосов
/ 11 февраля 2020

runAsyn c принимает Runnable в качестве входного параметра и возвращает CompletableFuture<Void>, что означает, что он не возвращает никакого результата.

CompletableFuture<Void> run = CompletableFuture.runAsync(()-> System.out.println("hello"));

Но suppyAsyn c принимает Поставщика в качестве аргумента и возвращает CompletableFuture<U> со значением результата, что означает, что он не принимает никаких входных параметров, но возвращает результат как вывод.

CompletableFuture<String> supply = CompletableFuture.supplyAsync(() -> {
        System.out.println("Hello");
        return "result";
    });

 System.out.println(supply.get());  //result

Вывод: Поэтому, если вы хотите, чтобы результат был возвращен, выберите supplyAsync или, если вы просто хотите выполнить асинхронное действие c, выберите runAsync.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...