Dzisiaj eksperymentowałem z "nowym" CompletableFuture
z Java 8 i byłem zdezorientowany, gdy nie znalazłem metody runAsync(Callable)
. Mogę to zrobić samodzielnie, jak pokazano poniżej, ale dlaczego brakuje mi tej (dla mnie bardzo oczywistej i przydatnej metody użytkowej)? Am I czegoś brakuje?CompletableFuture from 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;
}
Tak; 'CompletableFuture' jest niestety _never_ używane w dowolnym miejscu w JDK. http://www.nurkiewicz.com/2013/05/java-8-completablefuture-in-action.html – SLaks
@SLaks - tak, * interfejs * jest ohydny. prawdopodobnie jest to dobra implementacja, którą możemy wykorzystać wewnętrznie. bardzo niefortunne, że java nie ma dobrego oficjalnego interfejsu asynchronicznego. – ZhongYu