Java Thread Future sequence(List> futures)

Here you can find the source of sequence(List> futures)

Description

sequence

License

Apache License

Declaration

public static <T> CompletableFuture<List<T>> sequence(List<CompletableFuture<T>> futures) 

Method Source Code


//package com.java2s;
/*//from  w w w .ja  v a 2s . co  m
 * Copyright (c) 2016 MegaFon
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;

public class Main {
    public static <T> CompletableFuture<List<T>> sequence(List<CompletableFuture<T>> futures) {
        CompletableFuture<Void> allDoneFuture = CompletableFuture
                .allOf(futures.toArray(new CompletableFuture[futures.size()]));
        return allDoneFuture
                .thenApply(v -> futures.stream().map(CompletableFuture::join).collect(Collectors.<T>toList()));
    }

    public static <T> CompletableFuture<List<T>> sequence(CompletableFuture<T>... futures) {
        CompletableFuture<Void> allDoneFuture = CompletableFuture.allOf(futures);

        return allDoneFuture.thenApply(
                v -> Arrays.asList(futures).stream().map(CompletableFuture::join).collect(Collectors.<T>toList()));
    }
}

Related

  1. rollback(Object tx)
  2. runIfNotDoneAndGet(RunnableFuture future)
  3. runInNewThread(String threadName, Runnable target)
  4. sequence(List> futures)
  5. sequence(List> futures)
  6. sequence(List> futures)
  7. submitTasks(ExecutorCompletionService ecs, Iterable> tasks)
  8. sumFutures(List> futures)
  9. transferResult(final CompletionStage source, final CompletableFuture target)