Spring @Async vs CompleteableFuture

@Async nos provee una manera conveniente de gestionar los hilos con la configuración estandar de Spring para los executors.

CompletableFuture provee una manera de encadenar diferentes etapas de asincronismo directamente sin depender de Spring.

En otras palabras, @Async en código se veria así:

@Async

public CompletableFuture<String> computeAsync() {

    // do something slow - no change to this part

    // note: no need to wrap your code in a lambda/method reference,

    // no need to bother about executor handling

    return CompletableFuture.completedFuture("my result");

}

Pero el equivalente a este código anterior con solo ComplatebleFuture se veria así:

@Autowire

private Executor executor;

public CompletableFuture<String> computeAsync() {

    return CompletableFuture.supplyAsync(() -> {

        // do something slow

        return "my result";

    }, executor);

}

En conclusión, la gestión de hilos sera administrada por Spring con la ayuda de @Async.

Referencias:

Stackoverflow


Comentarios