分批处理接口(抽象类)代码实例
发布日期: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 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的底层及阻塞队列

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年02月29日 22时57分41秒

关于作者

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

推荐文章

java坐标代码_java实现计算地理坐标之间的距离 2019-04-21
kettle调用java程序_Kettle ETL调用 java代码来进行数据库的增删改查 2019-04-21
mysql 取两个时间差 php_在php和MySql中计算时间差的方法详解 2019-04-21
mysql 重启数据库实例_mysql 单机多实例重启数据库服务 2019-04-21
collator java_Java Collator getInstance(Locale)用法及代码示例 2019-04-21
dtc mysql_DTCC归来-高可用可扩展数据库架构探讨 2019-04-21
java怎样将日期本土化_Java中的日期操作 2019-04-21
java生产者消费者模型到精通_java生产者消费者模型 2019-04-21
java 执行 awk_3.1 biostar lesson3 linux学习日记;java版本;awk 2019-04-21
java二叉树求权值_百度笔试题目:二叉树路径权值和【转】 2019-04-21
欧亚马 java折叠车_如何选择欧亚马折叠车? 2019-04-21
python函数代码块以什么开头_Python初体验-开篇 代码全析 2019-04-21
java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc 2019-04-21
java中的无效的列类型_java.sql.SQLException: 无效的列类型: 1111 2019-04-21
php rewrite url_PHP_URL Rewrite的设置方法,URL Rewrite需要服务器的支持! - phpStudy 2019-04-21
php读取大文件某行内容,PHP读取和修改大文件的某行内容_PHP教程 2019-04-21
打印php错误日志,php怎样打印错误日志 2019-04-21
Calendar导入java,Java程序使用Calendar.add()方法将分钟添加到当前时间 2019-04-21
mysql中用户线程作用,mysql用户线程的建立与用户线程的状态源码解析 2019-04-21
php页面引用公共文件,WeiPHP插件模板中快速引入公共模板文件 2019-04-21