Что проверяет вопрос про thenCombine у CompletableFuture
thenCompose и thenCombine путают чаще всего. thenCompose — для последовательной зависимости: результат первого future нужен, чтобы запустить второй. thenCombine — для двух независимых future, которые выполняются параллельно и объединяются, когда оба готовы.
Вопрос проверяет, видите ли вы разницу между "один результат зависит от другого" и "два результата просто нужно свести в один". На собесе часто просят пример: получить цену и остаток на складе параллельно, а не один за другим.
CompletableFuture priceFuture = CompletableFuture.supplyAsync( this::fetchPrice);
CompletableFuture stockFuture = CompletableFuture.supplyAsync( this::fetchStock);
CompletableFuture result = priceFuture.thenCombine( stockFuture, (price, stock) -> "price=" + price
- ", stock=" + stock);
Спросят следом: что будет, если fetchStock упадёт с исключением. Combining-функция не выполнится вообще, итоговый result завершится exceptionally — исключение из любого из двух future долетает наружу через ту же цепочку. И чем это отличается от allOf(), если объединять больше двух future одновременно.
thenCombine — это fork для двух независимых задач, а не продолжение одной цепочки.
Тренажёр: 600 вопросов, мок с таймером, план повторов
senior·base — что спрашивают на самом деле
В этом посте были ссылки, но мы их удалили по правилам Сетки