completablefuture并发任务

利用allof方法

    /**
     * 简单Java并行代码
     * @param
     */
    public List<Integer> simpleParallel(){

        List<CompletableFuture<Integer>> futures = new ArrayList<>();
        for (int i = 0; i <10 ; i++) {
            CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
                System.out.println("有返回值的异步任务"+Thread.currentThread().getName());
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                return 1;
            });

            futures.add(future);
        }

        // 使用allOf方法来表示所有的并行任务
        CompletableFuture<Void> allFutures = CompletableFuture.allOf(
                futures.toArray(new CompletableFuture[futures.size()]));


        // 下面的方法可以帮助我们获得所有子任务的处理结果
        CompletableFuture<List<Integer>> finalResults = allFutures.thenApply(v ->
                futures.stream().map(CompletableFuture::join).collect(Collectors.toList())
        );
        List<Integer> resultList =  finalResults.join();

        System.out.println(resultList);

        return resultList;
    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容