
分批处理接口(抽象类)代码实例
发布日期:2021-07-20 20:53:08
浏览次数:11
分类:技术文章
本文共 2333 字,大约阅读时间需要 7 分钟。
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 Listaylist;
public BatchHandlerList(Integer perNum, Listaylist) {
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;
ListsubList = 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(ListsubList) {
//这里的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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.249.68.82]2022年04月17日 12时45分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
基于Python爬取教师主页
2019-04-24 12:56:23
代码审计-es*cms v6.7版本 文件包含漏洞
2019-04-24 12:56:23
Bluecms 代码审计,入门级别
2019-04-24 12:56:23
Django的MTV与MVC区别
2019-04-24 12:56:22
Python文件批量检测CVE-20190708的补丁是否安装
2019-04-24 12:56:22
xftp(xshell)无法连接kail的解决办法
2019-04-24 12:56:18
CentoS 7 安装VM tools出现问题归纳
2019-04-24 12:56:18
centos7安装图形界面
2019-04-24 12:56:17
CentoS6.9升级kernel(2.6.32→3.12.17)---主要是为了搭建docker环境
2019-04-24 12:56:17
windows10 降低磁盘的方法
2019-04-24 12:56:16
ASCII、gbk、Unicode、utf编码介绍及异同
2019-04-24 12:56:16
centos7.6安装solr6.6过程详解
2019-04-24 12:56:15
centos7.6安装中文输入法并解决中文乱码问题
2019-04-24 12:56:14
pycharm连接mysql出现时间问题
2019-04-24 12:56:14
python装饰器详解
2019-04-24 12:56:14
解决无法创建使用pip.exe创建进程
2019-04-24 12:56:10
华硕飞行堡垒7(FX95GT)配置风扇快捷键
2019-04-24 12:56:10
win10家庭版安装jdk-13
2019-04-24 12:56:09
购物车
2019-04-24 12:56:09
跑马灯 圆角搜索框 的实现
2019-04-24 12:56:09