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

多线程导入excel

设置线程池参数,创建线程池

  • corePoolSize要保留在池中的线程数,即使它们是空闲的,除非{@code - allowCoreThreadTimeOut}被设置
  • maximumPoolSize允许在池中的最大线程数
  • keepAliveTime当线程数大于核心时,这是多余的空闲线程将在终止前等待新任务的最大时间
  • unit {@code keepAliveTime}参数的时间单位
  • workQueue用于在执行之前保存任务的队列。这个队列将只保存由{@code execute}方法提交的{@code Runnable}任务
  • threadFactory是执行器创建新线程时使用的工厂
  • handler是执行被阻塞时使用的处理程序,因为线程边界和队列容量达到了

public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)

private static int corePoolSize = 50;//初始大小
private static int maximumPoolSize = 200; //最大值
//使用线程池管理
private static ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNamePrefix("RiskSafeguard-pool-%d").build();
private static ExecutorService pool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());

excel导入

/**
* 不动产抵押导入
* @param file
* @param createBy
* @return
*/
public boolean importData(MultipartFile file, Long createBy, Long itemApplyId){// 创建内部类的实例对象LoanItemRiskSafeguardService.ImportDataTask importDataTask = new LoanItemRiskSafeguardService.ImportDataTask(file, createBy, itemApplyId);pool.execute(importDataTask);return true;
}

LoanItemRiskSafeguardService业务类

/**
* 导入任务
* 实现Runable接口的内部类,重写run()
*/
public class ImportDataTask implements Runnable{MultipartFile file = null;Long createBy = null;Long itemApplyId = null;public ImportDataTask(MultipartFile file, Long createBy, Long itemApplyId){this.file = file;this.createBy = createBy;this.itemApplyId = itemApplyId;}@Overridepublic void run() {doImportDataTask(file, createBy, itemApplyId);}
}/**
* excel字段匹配
* @param file
* @param createBy
*/
public void doImportDataTask(MultipartFile file, Long createBy, Long itemApplyId){/*** excel数据的keys*/try{String[] keys = new String[]{ // 读取excel后,每个列对应一个key"riskSafeguardName",    // 登记权属人// ....};// 导入数据List<Map<String, Object>> excelData = ImportUtil.importExcel(file, keys, 0); // 读取excel数据if (!excelData.isEmpty()) {Map<String, java.lang.Object> excelMap = null;int success = 0,failed = 0;for(int i=0;i<excelData.size();i++) {excelMap = excelData.get(i);// 设置担保措施对象值,插入数据库  --- startLoanItemRiskSafeguard riskSafeguard = new LoanItemRiskSafeguard();// 从excelMap中根据key获取到value,设置到对象中,后续存表// 登记权属人String riskSafeguardName = excelMap.get("riskSafeguardName")==null?"":excelMap.get("riskSafeguardName").toString();riskSafeguard.setRiskSafeguardName(riskSafeguardName);// ...try {if(failed<=i){dao.insert("add",riskSafeguard);}}catch (Exception e){failed=i+1;e.printStackTrace();}if(failed  <= i){success = i + 1;}else{Long riskSafeguardId = riskSafeguard.getRiskSafeguardId();dao.delById(riskSafeguardId);}// 设置担保措施对象值,插入数据库  --- end}}} catch (BizException be) {logger.info("后台导入不动产抵押物excel失败", be);} catch (Exception e) {logger.error("后台导入不动产抵押物excel失败", e);}
}

相关文章:

多线程导入excel

设置线程池参数&#xff0c;创建线程池 corePoolSize要保留在池中的线程数&#xff0c;即使它们是空闲的&#xff0c;除非{code - allowCoreThreadTimeOut}被设置maximumPoolSize允许在池中的最大线程数keepAliveTime当线程数大于核心时&#xff0c;这是多余的空闲线程将在终止…...

设计模式(十五)状态模式

请直接看原文:设计模式系列 ------------------------------------------------------------------------------------------------------------------------------- 前言 建议在阅读本文前先阅读设计模式&#xff08;十一&#xff09;策略模式这篇文章&#xff0c;虽说状态…...

Java基于SpringBoot的在线文档管理系统的设计与实现论文

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;在线文档管理当然也不能排除在外。在线文档管理系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&am…...

突破编程_C++_STL教程( list 的高级特性)

1 std::list 的排序 1.1 基础类型以及 std::string 类型的排序 std::list的排序可以通过调用其成员函数sort()来实现。sort()函数使用默认的比较操作符&#xff08;<&#xff09;对std::list中的元素进行排序。这意味着&#xff0c;如果元素类型定义了<操作符&#xff…...

Scratch 第十六课-弹珠台游戏

第十六课-弹珠台游戏 大家好&#xff0c;今天我们一起做一款弹珠台scratch游戏&#xff0c;我们也可以叫它弹球游戏&#xff01;这款游戏在刚出来的时候非常火爆。小朋友们要认真学习下&#xff01; 这节课的学习目标 物体碰撞如何处理转向问题。复习键盘对角色的控制方式。…...

对简单工厂模式、工厂方法模式的思考

目录 1 背景1.1 题目描述1.2 输入描述1.3 输出描述1.4 输入示例1.5 输出示例 2 简单工厂模式3 工厂方法模式4 思考4.1 改进工厂方法模式 1 背景 题目源自&#xff1a;【设计模式专题之工厂方法模式】2.积木工厂 1.1 题目描述 小明家有两个工厂&#xff0c;一个用于生产圆形积木…...

【详识JAVA语言】面向对象程序三大特性之二:继承

继承 为什么需要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物对象&#xff0c;则可以用来表示现实中的实体&#xff0c;但是 现实世界错综复杂&#xff0c;事物之间可能会存在一些关联&#xff0c;那在设计程序是就需要考虑。 比如&…...

【剑指offer--C/C++】JZ3 数组中重复的数字

一、题目 二、本人思路及代码 这道题目它要求的时间空间利用率都是n&#xff0c;那么可以考虑创建一个长度为n的数组repeat初始化为0&#xff0c;下标代码出现的数字&#xff0c;下标对应的数组内容代表该下标数字出现的次数。然后遍历提供的数组&#xff0c;每出现一个数字&a…...

基于SpringBoot的在线拍卖系统设计与实现(源码)

项目源码&#xff1a;https://gitee.com/oklongmm/biye2 引言 随着互联网技术的发展&#xff0c;电子商务得以快速发展&#xff0c;其中之一的在线拍卖系统也逐渐得到了广泛的应用。但是&#xff0c;现有的在线拍卖系统在操作复杂性、安全性和稳定性方面存在一定的问题。为了…...

卢森堡比利时土耳其媒体宣发稿助力跨境出海推广新闻营销

【本篇由言同数字科技有限公司原创】随着全球化进程的加速&#xff0c;越来越多的品牌开始考虑在海外市场扩展业务。对于品牌来说&#xff0c;跨境海外推广是必要的&#xff0c;因为它可以帮助品牌打开更大的市场、吸引更多的消费者、提高品牌知名度和形象&#xff0c;并在全球…...

冒泡排序(C语言详解)

原理&#xff1a;从左到右一次比较&#xff0c;如果左侧数字比右侧数字大&#xff08;小&#xff09;&#xff0c;则两数交换&#xff0c;否则比较下一 组数字&#xff0c;每一次大循环比较可以将乱序的最右侧数字改为最大&#xff08;最小&#xff09;&#xff0c…...

STC-ISP原厂代码研究之 V3.7d汇编版本

最近在研究STC的ISP程序,用来做一个上位机烧录软件,逆向了上位机软件,有些地方始终没看明白,因此尝试读取它的ISP代码,但是没有读取成功。应该是目前的芯片架构已经将引导代码放入在了单独的存储块中,而这存储块有硬件级的使能线,在面包板社区-宏晶STC单片机的ISP的BIN文…...

【word】引用文献如何标注右上角

一、在Word文档中引用文献并标注在右上角的具体步骤如下 1、将光标移动到需要添加文献标注的位置&#xff1a; 2、在文档上方的工具栏中选择“引用”选项&#xff1a; 3、点击“插入脚注”或“插入尾注”&#xff1a; ①如果选择的是脚注&#xff0c;则脚注区域会出现在本页的…...

MySQL 5.5、5.6、5.7的主从复制改进

主从复制面临的问题 MySQL一直以来的主从复制都是被诟病,原因是: 1、主从复制效率低 早期mysql的复制是通过将binlog语句异步推送到从库。从库启动一个IO线程将接收到的数据记录到relaylog中;另外启动一个SQL线程负责顺序执行relaylog中的语句实现对数据的拷贝。 这里的…...

性能分析排查思路之日志(1)

本文是性能问题分析排查思路的展开内容之一&#xff0c;主要分为日志1期&#xff0c;机器4期、环境2期共7篇系列文章&#xff0c;本期是第一篇&#xff0c;讲日志的分析方法和经验。 系列文章传送门&#xff1a; 一图梳理性能问题分析排查思路-总体概述&#xff08;0&#xff…...

Vue中如何实现条件渲染?

在Vue中实现条件渲染非常简单且灵活&#xff0c;主要通过Vue的指令来实现。在Vue中&#xff0c;我们可以使用v-if和v-else指令来根据条件来渲染不同的内容。下面就让我们通过一个简单的示例来演示如何在Vue中实现条件渲染&#xff1a; <!DOCTYPE html> <html lang&qu…...

Postman上传文件的操作方法

前言 调用某个接口&#xff0c;测试上传文件功能。一时间不知如何上传文件&#xff0c;本文做个操作记录&#xff0c;期望与你有益。 步骤一、设置Headers key:Content-Type value:multipart/form-data 步骤二、设置Body 选择form-data key:file下拉框选择file类型value&…...

linux系统Jenkins工具介绍

Jenkins概念介绍 Jenkins概念Jenkins目的特性产品发布流程 Jenkins概念 Jenkins是一个功能强大的应用程序&#xff0c;允许持续集成和持续交付项目&#xff0c;无论用的是什么平台。这是一个免费的源代码&#xff0c;可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些…...

【python】遵守 robots.txt 规则的数据爬虫程序

程序1 编写一个遵守 robots.txt 规则的数据爬虫程序涉及到多个步骤&#xff0c;包括请求网页、解析 robots.txt 文件、扫描网页内容、存储数据以及处理异常。由于编程语言众多&#xff0c;且每种语言编写爬虫程序的方式可能有所不同&#xff0c;以下将使用 Python 语言举例&am…...

使用爬虫去获取四六级成绩

使用爬虫去获取四六级成绩 今天出成绩&#xff0c;没过&#xff0c;二战六级依然惨死&#xff0c;那么我就写一个简单的爬虫&#xff0c;其实也可以封装成一个接口的&#xff0c;然后直接输入姓名 身份证好 以及四六级即可获取成绩&#xff0c;我就是简单的玩了一下哈&#xf…...

汽车变速箱企业Kisssoft许可证成本控制成功案例

汽车变速箱企业Kisssoft许可证成本控制成功案例讲真&#xff0c;用Kisssoft做仿真设计&#xff0c;许可证成本真是吃掉不少预算&#xff0c;是一大推企业并尚未真正掌握咋用好这伙许可证一出来&#xff0c;弄得浪费严重&#xff0c;合规风险也高。咱就在2026年帮助一家汽车变速…...

如何轻松绕过Windows 11安装限制:终极MediaCreationTool.bat使用指南

如何轻松绕过Windows 11安装限制&#xff1a;终极MediaCreationTool.bat使用指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool…...

终极jless输入处理指南:STDIN与文件输入的完整流程解析

终极jless输入处理指南&#xff1a;STDIN与文件输入的完整流程解析 【免费下载链接】jless jless is a command-line JSON viewer designed for reading, exploring, and searching through JSON data. 项目地址: https://gitcode.com/gh_mirrors/jl/jless jless是一款专…...

DotNetPy:现代.NET 与 Python 互操作 实战指南捉

我为什么会发出这个疑问呢&#xff1f;是因为我研究Web开发中的一个问题时&#xff0c;HTTP请求体在 Filter&#xff08;过滤器&#xff09;处被读取了之后&#xff0c;在 Controller&#xff08;控制层&#xff09;就读不到值了&#xff0c;使用 RequestBody 的时候。 无论是字…...

从“开盲盒”到“当导演”:我是如何用ControlNet的8个模型,把AI绘画变成精准设计工具的

从“开盲盒”到“当导演”&#xff1a;我是如何用ControlNet的8个模型&#xff0c;把AI绘画变成精准设计工具的 作为一名UI设计师&#xff0c;我曾经对AI绘画又爱又恨。爱的是它能瞬间生成几十种风格的概念图&#xff0c;恨的是这些图总像开盲盒——你永远不知道下一张是惊喜还…...

Windows更新故障一站式解决方案:Reset Windows Update Tool的系统修复技术指南

Windows更新故障一站式解决方案&#xff1a;Reset Windows Update Tool的系统修复技术指南 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Updat…...

学术翻译效率低下?这款插件让文献阅读提速300%

学术翻译效率低下&#xff1f;这款插件让文献阅读提速300% 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mirrors/zo/zote…...

从NumPy ndarray到Mojo Tensor:零拷贝内存共享的3层协议解析(Intel XPU/Ampere GPU双平台实测延迟<87ns)

第一章&#xff1a;从NumPy ndarray到Mojo Tensor&#xff1a;零拷贝内存共享的3层协议解析&#xff08;Intel XPU/Ampere GPU双平台实测延迟<87ns&#xff09;零拷贝内存共享并非简单指针传递&#xff0c;而是由硬件抽象层、内存描述符协商层与运行时绑定层共同构成的三重协…...

别再手写推理Wrapper了!.NET 11内置ModelRunner抽象层实战拆解:3张核心类图+2个致命陷阱+1份生产环境压测报告

第一章&#xff1a;.NET 11 ModelRunner抽象层的演进本质与设计哲学.NET 11 中的 ModelRunner 抽象层并非简单接口叠加&#xff0c;而是对模型执行生命周期进行语义升维的结果——它将推理调度、状态管理、资源隔离与可观测性注入统一契约&#xff0c;使框架层与模型实现彻底解…...

Redis命令处理机制源码探究霉

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储&#xff0c;而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码&#xff0c;常规方式只能重新配置连接&#xff0c;效率极低。本项目只作为学习研究使用&#xff0c;不做其他…...