首页 > 其他分享 >开流运行多线程CompletableFuture

开流运行多线程CompletableFuture

时间:2022-12-21 11:33:07浏览次数:61  
标签:异步 ConcurrentHashMap 开流 factor CompletableFuture new dataReportSpec 多线程

CompletableFuture提高接口性能

//根据排口查询因子信息(异步)
CompletableFuture<List<FactorInfo>> listCompletableFuture =
            CompletableFuture.supplyAsync(() -> mapper.loadPortFactor(spec.getPort().getId()), EXECUTOR);
//排口所配因子
List<FactorInfo> factorInfos = listCompletableFuture.join();
//异步 所以用ConcurrentHashMap
ConcurrentHashMap<String, List<Map>> testmap1 = new ConcurrentHashMap<>();
//异步查询所有因子的数据
CompletableFuture[] completableFutures = factorInfos.stream().map(factor -> CompletableFuture.runAsync(() -> {
            DataReportSpec dataReportSpec = new DataReportSpec();
            BeanUtils.copyProperties(spec, dataReportSpec);
            dataReportSpec.setFactor(factor);
            testmap1.put(factor.getCode(), mapper.loadGasBySpec(dataReportSpec));
        }, EXECUTOR)).toArray(CompletableFuture[]::new);
//等待所有执行完毕
CompletableFuture.allOf(completableFutures).join();

本文由mdnice多平台发布

标签:异步,ConcurrentHashMap,开流,factor,CompletableFuture,new,dataReportSpec,多线程
From: https://www.cnblogs.com/linlu/p/16995885.html

相关文章

  • Java多线程批量操作,居然有人不做事务控制?
    前言公司业务中遇到一个需求,需要同时修改最多约5万条数据,而且还不支持批量或异步修改操作。于是只能写个for循环操作,但操作耗时太长,只能一步一步寻找其他解决方案。具体......
  • .net core 5,6,7【多线程笔记】取消令牌(CancellationToken)
    介绍在使用C#异步的场景,多多少少会接触到CancellationTokenSource。它和取消异步任务相关的,CancellationToken就是它生产出来的。演示任务取消执行回调vartokenSource......
  • 多线程-在线咨询 即使发送方,又是接收方-2022-12-20
    发送方,接收方 packageChat;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.DatagramPacket;importjava.net.DatagramSocket;impo......
  • 再谈Python多线程--避免GIL对性能的影响
    在Python中使用多线程,如果你对GIL本身没有一定的了解;那么很有可能你只是写出了正确的多线程代码,而并没有达到多线程的目的,甚至截然相反的效果。下面介绍了Python中GIL的作用......
  • [编程基础] C++多线程入门8-从线程返回值
    date:2020-05-2917:09:34+0800tags:-编程基础原始C++标准仅支持单线程编程。新的C++标准(称为C++11或C++0x)于2011年发布。在C++11中,引入了新的线程库。因此运行......
  • win32多线程编程与锁
    模拟售票程序。未加锁程序:#include<iostream.h>#include<windows.h>intindex=0;intti=100;DWORDWINAPIfun1(LPVOIDlpParameter);DWORDWINA......
  • linux多线程随机数,随机数SecureRandom在Linux下阻塞
    https://blog.csdn.net/weixin_35973521/article/details/116813890-Djava.security.egd=file:/dev/./urandomhttps://blog.csdn.net/weixin_32159771/article/details/1......
  • 死磕Java多线程之线程池的基本使用与核心原理
    Java多线程之线程池一、线程池的自我介绍1.线程池的重要性(为什么使用线程池)线程池可以应对突然大爆发量的访问,通过有限个固定线程为大量的操作服务,减少创建和销毁线程所需......
  • C#多线程(四)并行编程篇之结构化
    C#多线程(四)并行编程篇之结构化 前言在前三章中我们的案例大量使用到了Thread这个类,通过其原始API,对其进行创建、启动、中断、中断、终止、取消以及异常处理,这样的写......
  • python多线程实现爬虫任务
    python语言对于网络爬虫来说是非常重要的,大多数互联网公司都热衷于python语言编写爬虫。那么如果大批量做爬虫工作,如何才能快速的爬取数据,这就需要多线程多任务操作才能快速......