Oggi ho sperimentato il "nuovo" CompletableFuture
da Java 8 e mi sono trovato confuso quando non ho trovato un metodo runAsync(Callable)
. Posso farlo da solo come mostrato di seguito, ma perché questo (per me metodo di utilità molto ovvio e utile) manca? Am I mi manca qualcosa?CompletableFuture da Callable?
public static <T> CompletableFuture<T> asFuture(Callable<? extends T> callable, Executor executor) {
CompletableFuture<T> future = new CompletableFuture<>();
executor.execute(() -> {
try {
future.complete(callable.call());
} catch (Throwable t) {
future.completeExceptionally(t);
}
});
return future;
}
Sì; 'CompletableFuture' è purtroppo usato in qualsiasi punto del JDK. http://www.nurkiewicz.com/2013/05/java-8-completablefuture-in-action.html – SLaks
@SLaks: sì, l'interfaccia * è orribile. è probabilmente inteso come una buona implementazione che possiamo usare internamente. molto sfortunato che java non abbia una buona interfaccia asincrona ufficiale. – ZhongYu