Aller au contenu

Fire And Forget Task (ARCH4021)

Ce contenu n’est pas encore disponible dans votre langue.

Key java.async.ignored-future · Severity warning · Category async

When a CompletableFuture or task is produced as a bare expression statement and never awaited, assigned, or returned, its exceptions are lost and its ordering is undefined. The result is never observed.

void process(List<Order> orders) {
for (Order o : orders) {
CompletableFuture.runAsync(() -> save(o)); // result ignored
}
}
void process(List<Order> orders) {
List<CompletableFuture<Void>> futures = new ArrayList<>();
for (Order o : orders) {
futures.add(CompletableFuture.runAsync(() -> save(o)));
}
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
}

Assign the produced future and wait on it with join()/get(), or return it to the caller.