스레드 병렬 처리 배치 작업

타이밍 작업 클래스 코드:
package com.jzfq.rms.autoApprove.job;


import com.alibaba.fastjson.JSONObject;
import com.jzfq.rms.autoApprove.bean.InnerRuleProcess;
import com.jzfq.rms.autoApprove.bean.InnerRuleProcessQueryBean;
import com.jzfq.rms.autoApprove.service.IExecuteTaskService;
import com.jzfq.rms.autoApprove.service.IInnerRuleProcessService;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


/**
 *           
 * @author             
 */
@Component("innerRuleProcessingJob")
public class InnerRuleProcessingJob {
    private final Logger LOG = LoggerFactory.getLogger(InnerRuleProcessingJob.class);
    @Autowired
    IExecuteTaskService executeTaskService;

    ExecutorService fixedThreadPool = Executors.newCachedThreadPool();
    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]);
            fixedThreadPool.execute(new Runnable() {
                @Override
                public 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 innerRuleProcesseslist = innerRuleProcessService.getInnerRuleTodoList(innerRuleProcessQueryBean);
 
  
 
  
 
  
 
  
getInnerRuleTodoList  :
 
  
/**
 *              
 * @param innerRuleProcessQueryBean
 * @return
 */
@Override
public List getInnerRuleTodoList(InnerRuleProcessQueryBean innerRuleProcessQueryBean) {
    return innerRuleProcessMapper.selectInnerRuleList(innerRuleProcessQueryBean);
}
 
  
 
  
 
  
selectInnerRuleList mybatis xml:
 
  
<select id="selectInnerRuleList" resultMap="BaseResultMap"  parameterType="com.jzfq.rms.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 <= #{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;

좋은 웹페이지 즐겨찾기