FutureTask基本用法

1.FutureTask获取异步执行的数据

场景:异步执行10次1+。。。+99的计算结果,然后再执行主业务逻辑,最后获取每次执行的结果,再把10次的计算结果相加

public static void main(String[] args) throws InterruptedException, ExecutionException {
        ExecutorService executorService=Executors.newFixedThreadPool(5);
        List<FutureTask<Integer>> list=new ArrayList<>();
        for (int i=0;i<10;i++){
            FutureTask<Integer> futureTask=new FutureTask<Integer>(new MyCallable(""+i));
            list.add(futureTask);
            executorService.submit(futureTask);
        }
        System.out.println("子任务已经全部提交完成,继续执行主任务");
        TimeUnit.MILLISECONDS.sleep(5000);

        //开始计算异步执行的结果
        Integer totalResult = 0;
        for (int j=0;j<list.size();j++){
            totalResult+=list.get(j).get();
        }
        System.out.println(totalResult);

        //不要忘记关掉线程
        executorService.shutdown();

        }

      static class MyCallable implements Callable<Integer> {

        private String threadName;
        public MyCallable(String threadName){
            this.threadName=threadName;
        }

           @Override
           public Integer call() throws Exception {
               int result=0;

               for (int i=0;i<100;i++){
                   result+=i;
               }

               //为了说明异步执行,sleep5秒
                TimeUnit.MILLISECONDS.sleep(5000);
               System.out.println("子任务==="+threadName+"===执行完成,结果是:"+result);
               return result;
           }
       }

2.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值