线程并发处理跑批任务

阅读: 评论:0

线程并发处理跑批任务

线程并发处理跑批任务

定时任务类代码:

 

package s.autoApprove.job;import com.alibaba.fastjson.JSONObject;
import s.autoApprove.bean.InnerRuleProcess;
import s.autoApprove.bean.InnerRuleProcessQueryBean;
import s.autoApprove.service.IExecuteTaskService;
import s.autoApprove.service.IInnerRuleProcessService;
import java.util.List;import org.apachemons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
SimpleDateFormat;
import urrent.ExecutorService;
import urrent.Executors;/*** 内部规则跑批定时任务* @author 大连桔子分期科技有限公司*/
@Component("innerRuleProcessingJob")
public class InnerRuleProcessingJob {private final Logger LOG = Logger(InnerRuleProcessingJob.class);@AutowiredIExecuteTaskService executeTaskService;ExecutorService fixedThreadPool = wCachedThreadPool();public void execute() {//线程池:0/1/2/3/4/5   每个线程独立处理5单数据String[] remainders = {"0","1","2","3","4","5"};for(int i = 0;i < remainders.length;i++){int intRemainder = new Byte(remainders[i]);ute(new Runnable() {@Overridepublic void run() {//内部规则跑批开始try {executeTaskService.innerRuleProcessing(6,intRemainder);} catch (Exception e) {e.printStackTrace();}}});}}
}

 

 

 

 

innerRuleProcessing类实现代码:
 
innerRuleProcessQueryBean.setLimitTime(5); innerRuleProcessQueryBean.setExecuteStatus(0); innerRuleProcessQueryBean.setExecuteTimes(3); innerRuleProcessQueryBean.setModulus(modulus); innerRuleProcessQueryBean.setRemainder(remainder); List<InnerRuleProcess> innerRuleProcesseslist = InnerRuleTodoList(innerRuleProcessQueryBean);
 
 
 
 
getInnerRuleTodoList方法:
 
/*** 获取定时任务所需的进件集合* @param innerRuleProcessQueryBean* @return*/
@Override
public List<InnerRuleProcess> getInnerRuleTodoList(InnerRuleProcessQueryBean innerRuleProcessQueryBean) {return innerRuleProcessMapper.selectInnerRuleList(innerRuleProcessQueryBean);
}

 

 

 

 
 
selectInnerRuleList mybatis xml:
 
<select id="selectInnerRuleList" resultMap="BaseResultMap"  parameterType="s.autoApprove.bean.InnerRuleProcessQueryBean">SELECT<include refid="Base_Column_List" />FROM inner_rule_process t WHERE 1=1<if test="executeStatus != null" >AND execute_status = #{executeStatus,jdbcType=BIGINT}</if><if test="executeTimes != null" >AND execute_times &lt;= #{executeTimes,jdbcType=BIGINT}</if><if test="modulus != null and remainder != null">AND MOD(front_id, #{modulus}) = #{remainder}</if>ORDER BY t.`create_time`<if test="limitTime != null" >LIMIT #{limitTime,jdbcType=BIGINT}</if>
</select>

 

 

 

 
 
该功能当quartz调用job是 通过遍历线程组 指派给单个新起线程线程编号
sql:
select  *  from inner_rule_process where execute_status = 0 and execute_times <=3 and MOD(front_id,6) = 5;

 

本文发布于:2024-02-02 23:20:22,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170688722047116.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:线程
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23