分批处理接口(抽象类)代码实例
发布日期:2021-07-20 20:53:08
浏览次数:41
分类:技术文章
本文共 2062 字,大约阅读时间需要 6 分钟。
package com.util;import java.util.List;/** * * @description 分批回调执行方法接口 * */public interface BatchHandlerInterface{ /** * 分批回调方法 需重写此方法 * */ public void handler(List subList);}
package com.util;import java.util.List;import org.apache.log4j.Logger;/** * @description 分批调用方法接口 * */public abstract class BatchHandlerListimplements BatchHandlerInterface { private static final Logger LOGGER = Logger.getLogger(BatchHandlerList.class); //每次处理条数 private Integer perNum; private List aylist; public BatchHandlerList(Integer perNum, List aylist) { super(); this.perNum = perNum; this.aylist = aylist; } /** * 分批调用方法 参考下面的线程池调用, 每个线程执行sublist长度的任务 * */ public void handlerList(){ try{ if(aylist!=null && aylist.size() > 0){ int size = aylist.size(); int startIndex = 0; int endIndex = 1; int num = 1; if (size > perNum) { num = size / perNum; } for (int i = 1; i <= num; i++) { endIndex = (i) * perNum > size ? size : (i) * perNum; List subList = aylist.subList(startIndex, endIndex); startIndex = perNum * i; if (subList!=null && subList.size() > 0) { handler(subList); } if (num == i && perNum * num < size) { //最后一批处理 subList = aylist.subList(perNum * num, size); if (subList.size() > 0) { handler(subList); } } } } }catch(Throwable e){ LOGGER.error("batchHandlerList handler exception",e); //错误回调方法可以重写 errorHandler(); } } public void errorHandler(){};}
以上是接口及抽象类,下面是调用及实现
//组装数据 BatchHandlerListhandler = new BatchHandlerList (20,waybillNos) { @Override public void handler(List subList) { //这里的records用的是引用传递 后面要用 SispRecieveInfoRequestRunnable sispRunable = new SispRecieveInfoRequestRunnable(subList, contextOrder, language, count, records); sispRecieveInfoExecutor.execute(sispRunable); runList.add(sispRunable); } }; //执行调用 handler.handlerList();
转载地址:https://blog.csdn.net/liao0801_123/article/details/81111604 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年02月29日 22时57分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java坐标代码_java实现计算地理坐标之间的距离
2019-04-21
mysql 取两个时间差 php_在php和MySql中计算时间差的方法详解
2019-04-21
mysql 重启数据库实例_mysql 单机多实例重启数据库服务
2019-04-21
dtc mysql_DTCC归来-高可用可扩展数据库架构探讨
2019-04-21
java怎样将日期本土化_Java中的日期操作
2019-04-21
java生产者消费者模型到精通_java生产者消费者模型
2019-04-21
java二叉树求权值_百度笔试题目:二叉树路径权值和【转】
2019-04-21
欧亚马 java折叠车_如何选择欧亚马折叠车?
2019-04-21
python函数代码块以什么开头_Python初体验-开篇 代码全析
2019-04-21
java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc
2019-04-21
php读取大文件某行内容,PHP读取和修改大文件的某行内容_PHP教程
2019-04-21
打印php错误日志,php怎样打印错误日志
2019-04-21
mysql中用户线程作用,mysql用户线程的建立与用户线程的状态源码解析
2019-04-21
php页面引用公共文件,WeiPHP插件模板中快速引入公共模板文件
2019-04-21