executor 线程查询数据和整合数据,CompletableFuture.supplyAsync 的应用

查询接口,发现需要查询大量的sql,导致返回的时间超长,并且有多个循环查找。
可以用多线程方式进行查询

// 创建要调用的实体类或者方法;这个类随自己的逻辑进行修改
public class PayDataStatisticsProcessor implements Runnable{
	// 服务类,不需要再注入
	private PayDataStatisticsService payDataStatisticsService;
	// redis工具,用到就写上
    private RedisUtil redisUtil;
    // 实体类
    private ModelStatis modelStatis ;
    // 返回的实体
    private List<ModelStatis > resultList;
    // 查询条件,封装在实体里
    private ModelStatisQuery modelStatisQuery ;
    // 金额格式化
    private DecimalFormat df = new DecimalFormat("##,##0.00");
    // 构造函数 这样就不需要get、set 方法了
     public PayDataStatisticsProcessor(PayDataStatisticsService payDataStatisticsService, RedisUtil redisUtil, ModelStatis modelStatis, List<ModelStatis > resultList, ModelStatisQuery modelStatisQuery ) {
      this.payDataStatisticsService = payDataStatisticsService;
      this.redisUtil = redisUtil;
      this.modelStatis = modelStatis;
      this.resultList = resultList;
      this.modelStatisQuery = modelStatisQuery ;
     }
     // 重写线程方法
     @Override
    public void run() {
    	ModelStatis result = new ModelStatis ();
    	// 一堆逻辑

		// 同步方法;一定要加
    	synchronized (resultList){
            resultList.add(result);
        }
    }
}

// 调用方式
 int numThreads = 6; // 定义线程数
        ExecutorService executor = Executors.newFixedThreadPool(numThreads);
for (int i = 0; i < 8; i++) {
 PayDataStatisticsProcessor processor = new PayDataStatisticsProcessor(构造方法要传的参数);
	 executor.execute(processor);
}
	// 关闭线程池 记得要关闭
  executor.shutdown();
  // 线程执行是否完成,没完成继续执行
  while (!executor.isTerminated()) {
       // 等待所有任务执行完成
       Thread.sleep(100);
       System.out.println("等待所有线程执行完成,等待时间100ms");
   }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值