南京网站优化网站建设公司,深圳前十名代运营公司,邢台做网站优化哪儿好,中国电信网上营业厅设置线程池参数#xff0c;创建线程池
corePoolSize要保留在池中的线程数#xff0c;即使它们是空闲的#xff0c;除非{code - allowCoreThreadTimeOut}被设置maximumPoolSize允许在池中的最大线程数keepAliveTime当线程数大于核心时#xff0c;这是多余的空闲线程将在终止…设置线程池参数创建线程池
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 LinkedBlockingQueueRunnable(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后每个列对应一个keyriskSafeguardName, // 登记权属人// ....};// 导入数据ListMapString, Object excelData ImportUtil.importExcel(file, keys, 0); // 读取excel数据if (!excelData.isEmpty()) {MapString, java.lang.Object excelMap null;int success 0,failed 0;for(int i0;iexcelData.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(failedi){dao.insert(add,riskSafeguard);}}catch (Exception e){failedi1;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);}
}