当前位置: 首页 > news >正文

利用CountDownLatch批量处理解决实际业务问题

一、背景

项目中发现针对批量网元回退时候,会出现性能问题,接口响应很慢。发现性能瓶颈在于数据规模比较大,SQL执行无性能问题,因此特意采用CountDownLatch多线程处理,提高接口响应速度。

二、实现

待处理数据量超过指定阈值,启用多线程分批处理

  private void test(List<LineVo> lineList){// 数量阈值int maxShold = 2000;if(lineList.size() > maxShold){CountDownLatch countDownLatch = new CountDownLatch(lineList.size());// 线程小分组    	int threadGroup = 20;// 默认最大线程数int defaultThread = 5;int maxThreadSize = Math.min(1+lineList.size()/threadGroup ,defaultThread);// 创建线程池ThreadPoolExecutor executor = new ThreadPoolExecutor(3, maxThreadSize , 10L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<>(lineList.size()),new ThreadPoolExecutor.CallerRunsPolicy());// 多线程处理for(Line line:lineList){ResultVo resultVo = new ResultVo();executor.execute(new ResultTask(line,resultVo,countDownLatch));// 父线程保存结果,避免同步问题resultVo.add(resultVo);}countDownLatch.await();executor.shutdown();// ResultVo有个isSuccess字段,记录成功标识if(resultList.stream().anyMatch(item -> !item.isSuccess())){// 任意线程失败,抛出异常}}}class ResultTask implements Runnable {private final Line line;private final ResultVo resultVo;private final CountDownLatch countDownLatch;public ResultTask (Line line,ResultVo resultVo,CountDownLatch countDownLatch){this.line = line;this.resultVo= resultVo;this.countDownLatch= countDownLatch;}@Overridepublic void run(){try{// 执行实际业务逻辑// 执行完毕,设置执行结果resultVo.setSuccess(true);}catch(Exception e){resultVo.setSuccess(false);}finaly{countDownLatch.countDown();}}}
http://www.dtcms.com/a/432051.html

相关文章:

  • 网站建设公司新员工培训ppt模板北京发布紧急通知2023年
  • 移动端网站怎么做软件界面设计软件有哪些
  • Linux系统C语言中与文件操作相关的核心库函数讲解
  • 大数据成矿预测系列(二) | 证据权重法如何克服自身局限?
  • 基于springboot的家校合作管理系统
  • 湖南网站建设 搜搜磐石网络网站首页图片素材
  • STM32控制开发学习笔记【基于STM32 HAL库】
  • 滕州做网站比较好的网络公司网页设计十大品牌
  • 【项目】基于Spring全家桶的论坛系统 【上】
  • 北京移动端网站公司基于PHP的家教网站开发环境
  • 网站毕设怎么做网站开发合同技术目标
  • 成都市建设网站首页kol营销
  • MySQL学习笔记07:MySQL SQL优化与EXPLAIN分析实战指南(上):执行计划深度解析
  • 产品经理指南:Vibes与AI提示词驱动短视频创新与Instagram优化
  • 手机上怎样制作网站广州市做网站公司
  • 数据要素X_第三批“数据要素×”典型案例——现代农业领域【附全文阅读】
  • 华容网站企业软件管家
  • 汽车可以做哪些广告视频网站南宁建站服务公司
  • 【代码随想录day 31】 力扣 56. 合并区间
  • 成都网站快速优化排名做app需要什么条件
  • 网站怎样做全国地区推广网站seo方案
  • 建站用wordpress 起飞了如何创建网站的步骤
  • 网站建设标新立异类似织梦的建站cms
  • 企业建立网站步骤深圳市9号文
  • 建站推广免费公司个人博客免费模板
  • 什么是营销型网站?哪个wordpress编辑器
  • 域名购买后如何建设网站免费制作网站平台
  • 安全电子商务网站设计所见即所得的网页设计软件
  • 项目实战5:聊天室
  • 网站建设图片流程图我的家乡网页制作素材