Является ли CompletableFuture.supplyAsync() избыточным, если он не изменяет входящее значение?JAVA

Программисты JAVA общаются здесь
Anonymous
Является ли CompletableFuture.supplyAsync() избыточным, если он не изменяет входящее значение?

Сообщение Anonymous »

Во время курса по параллельному программированию я столкнулся с этим примером кода:

Код: Выделить всё

@Test
void promiseTestCompose2() throws Exception {
CompletableFuture future1 = CompletableFuture
.supplyAsync(this::slowInit)
.thenApply(this::slowIncrement);

CompletableFuture thenCompose = future1
.thenCompose(value -> CompletableFuture.supplyAsync(() -> value))
.thenApply(this::slowIncrement);

int result = thenCompose.get();
assertEquals(result, 3);
}
Похоже, что в этой части предложение thenCompose() является избыточным:

Код: Выделить всё

CompletableFuture thenCompose = future1
.thenCompose(value -> CompletableFuture.supplyAsync(() -> value))
.thenApply(this::slowIncrement);
на случай, если я изменю его на

Код: Выделить всё

CompletableFuture thenCompose = future1.thenApply(this::slowIncrement);
тест все равно проходит.
Поэтому мой вопрос заключается в том, .thenCompose(value -> CompletableFuture.supplyAsync(() -> value))< /code> здесь действительно лишний или я что-то упустил?
Мне хотелось бы получить объяснение, могу ли я удалить thenCompose(), если он не изменяет входящее значение .

Подробнее здесь: https://stackoverflow.com/questions/785 ... y-the-inco

Вернуться в «JAVA»