@Beta @GwtCompatible public static final class Futures.FutureCombiner<V> extends java.lang.Object
ListenableFuture whose result is generated from a combination
of input futures.
See Futures.whenAllComplete(com.google.common.util.concurrent.ListenableFuture<? extends V>...) and Futures.whenAllSucceed(com.google.common.util.concurrent.ListenableFuture<? extends V>...) for how to instantiate this class.
Example:
final ListenableFuture<Instant> loginDateFuture =
loginService.findLastLoginDate(username);
final ListenableFuture<List<String>> recentCommandsFuture =
recentCommandsService.findRecentCommands(username);
Callable<UsageHistory> usageComputation =
new Callable<UsageHistory>() {
public UsageHistory call() throws Exception {
return new UsageHistory(
username, loginDateFuture.get(), recentCommandsFuture.get());
}
};
ListenableFuture<UsageHistory> usageFuture =
Futures.whenAllSucceed(loginDateFuture, recentCommandsFuture)
.call(usageComputation, executor);| Modifier and Type | Method | Description |
|---|---|---|
<C> ListenableFuture<C> |
call(java.util.concurrent.Callable<C> combiner) |
Like
call(Callable, Executor) but using direct executor. |
<C> ListenableFuture<C> |
call(java.util.concurrent.Callable<C> combiner,
java.util.concurrent.Executor executor) |
Creates the
ListenableFuture which will return the result of calling Callable.call() in combiner when all futures complete, using the specified
executor. |
<C> ListenableFuture<C> |
callAsync(AsyncCallable<C> combiner) |
Like
callAsync(AsyncCallable, Executor) but using direct executor. |
<C> ListenableFuture<C> |
callAsync(AsyncCallable<C> combiner,
java.util.concurrent.Executor executor) |
Creates the
ListenableFuture which will return the result of calling AsyncCallable.call() in combiner when all futures complete, using the specified
executor. |
public <C> ListenableFuture<C> callAsync(AsyncCallable<C> combiner, java.util.concurrent.Executor executor)
ListenableFuture which will return the result of calling AsyncCallable.call() in combiner when all futures complete, using the specified
executor.
If the combiner throws a CancellationException, the returned future will be
cancelled.
If the combiner throws an ExecutionException, the cause of the thrown
ExecutionException will be extracted and returned as the cause of the new
ExecutionException that gets thrown by the returned combined future.
Canceling this future will attempt to cancel all the component futures.
public <C> ListenableFuture<C> callAsync(AsyncCallable<C> combiner)
callAsync(AsyncCallable, Executor) but using direct executor.public <C> ListenableFuture<C> call(java.util.concurrent.Callable<C> combiner, java.util.concurrent.Executor executor)
ListenableFuture which will return the result of calling Callable.call() in combiner when all futures complete, using the specified
executor.
If the combiner throws a CancellationException, the returned future will be
cancelled.
If the combiner throws an ExecutionException, the cause of the thrown
ExecutionException will be extracted and returned as the cause of the new
ExecutionException that gets thrown by the returned combined future.
Canceling this future will attempt to cancel all the component futures.
public <C> ListenableFuture<C> call(java.util.concurrent.Callable<C> combiner)
call(Callable, Executor) but using direct executor.