首页 > 其他 > 详细

CompletableFuture 获取所有task的结果

时间:2021-01-28 09:08:16      阅读:191      评论:0      收藏:0      [点我收藏+]
前置知识
1,CompletableFuture 使用supplyAsync 可以直接执行,并得到返回结果
2,CompletableFuture get方法,可以得到最终的结果
代码
private void foreachGet() throws ExecutionException, InterruptedException {
        Random random = new Random();
        long mainstart = System.currentTimeMillis();
        List<CompletableFuture<String>> futureList = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            CompletableFuture<String> future = CompletableFuture.supplyAsync(()->{
                System.out.println(Thread.currentThread()+",begin");
                long start = System.currentTimeMillis();
                int time = random.nextInt(3000);
                try {
                    Thread.sleep(time);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                long end = System.currentTimeMillis();
                System.out.println(Thread.currentThread()+",cost:"+(end - start));
                System.out.println(Thread.currentThread()+",end");
                return time+"";
            });
            futureList.add(future);
        }

        for (CompletableFuture<String> future : futureList) {
            future.get();
        }
        long mainend = System.currentTimeMillis();
        System.out.println(Thread.currentThread()+" is end:"+(mainend - mainstart));
    }

 



CompletableFuture 获取所有task的结果

原文:https://www.cnblogs.com/dongma/p/14337887.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!