分批处理接口(抽象类)代码实例
发布日期: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 BatchHandlerList
   
     implements 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(){};}

以上是接口及抽象类,下面是调用及实现

//组装数据
   BatchHandlerList  handler = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Storm简介
下一篇:Spring线程池ThreadPoolTaskExecutor的底层及阻塞队列

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.249.68.82]2022年04月17日 12时45分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章