CompletableFuture简单介绍

本文介绍了Java8的CompletableFuture,它结合了FutureTask的同步任务和异步调用特性,允许代码并行运行。通过一个案例展示了未使用与使用CompletableFuture时,调用后端接口查询数据的效率差异,强调了CompletableFuture在提升并发性能上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CompletableFuture

1.介绍及语法格式

CompletableFuture是java8新增的并发工具类,继承了FutureTask的同步任务的特点,同时新增了异步调用的特点,说简单点就是它可以让代码一起运行,不需要一个个运行

var aFuture = CompletableFuture.supplyAsync(()->{
   //.....
   return xxx;
});
var bFuture = CompletableFuture.supplyAsync(()->{
   //.....
   return xxx;
});
var cFuture = CompletableFuture.supplyAsync(()->{
   //.....
   return xxx;
});
//并行处理
CompletableFuture
  .allOf(aFuture,
        bFuture,
        cFuture)
.join();
//取值
var a= aFuture.get();
var b= bFuture.get();
var c= cFuture.get();

2.案例

 

调用的接口是:/index/getBaseInfo

请求方式:Get请求

查询对应的后端接口位置:

未使用CompletableFuture方法

IndexController层

    /**
     * 首页--基础数据统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    @GetMapping("/getBaseInfo")
    public AjaxResult getBaseInfo(@RequestParam("beginCreateTime") String beginCreateTime,
                                  @RequestParam("endCreateTime") String endCreateTime){
        return AjaxResult.success(reportService.getBaseInfo(beginCreateTime,endCreateTime));
    }

查看对应的service层

IReportService

    /**
     * 首页基本数据展示
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexBaseInfoVO getBaseInfo(String beginCreateTime, String endCreateTime);

可以看到返回的VO对象是一个叫IndexBaseInfoVO的类

package com.huike.report.domain.vo;
​
import lombok.Data;
​
/**
 * 首页基本数据VO对象
 */
@Data
public class IndexBaseInfoVO {
    private Integer cluesNum=0;  //线索数目
    private Integer businessNum=0;  //商机数目
    private Integer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值