spring线程池

config.properties

taskthread.pool.corePoolSize=5
taskthread.pool.maxPoolSize=10
taskthread.pool.queueCapacity=25
taskthread.pool.keepAliveSeconds=10

applicationContext.xml

<!-- thread pool config-->
    <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
     <property name="corePoolSize" value="${taskthread.pool.corePoolSize}" />
     <property name="maxPoolSize" value="${taskthread.pool.maxPoolSize}" />
     <property name="queueCapacity" value="${taskthread.pool.queueCapacity}" />
     <property name="keepAliveSeconds" value="${taskthread.pool.keepAliveSeconds}"></property>
    </bean>

线程池执行任务

package cn.com.casa.prov.service.session;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import org.springframework.stereotype.Service;

import pub.util.DateUtil;
import pub.util.SystemUtil;

import cn.com.casa.prov.dao.BaseSessionInterface;
import cn.com.casa.prov.domain.CasaSessionManager;
/**
 * 
 * @author cz
 *
 */
@Service("taskWorkThreadService")
public class TaskWorkThreadService{
    private Logger logger=Logger.getLogger(TaskWorkThreadService.class);
    @Autowired
    private ThreadPoolTaskExecutor taskExecutor;
    //@Autowired
    //private SessionManagerDao dao;
    
    //private BaseSessionInterface taskBaseDao;
    
    
    /*
    public void execute(TaskInterface intf){
        taskExecutor.execute(new TaskWorkThread(intf));
        
    }*/
    public void execute(TaskInterface intf,BaseSessionInterface baseDao){
        logger.info(this.getClass().getName()+" method :execute");
    //    this.taskBaseDao=baseDao;
        taskExecutor.execute(new TaskWorkThread(intf,baseDao));
        
    }
    
    public void execute(BaseSessionInterface baseDao,TaskInterface...intfs){
        logger.info(this.getClass().getName()+" method :execute");
        //this.taskBaseDao=baseDao;
        for(int i=0;i<intfs.length;i++){
            taskExecutor.execute(new TaskWorkThread(intfs[i],baseDao));
        }
        
    }
    public void execute(TaskInterface...intfs){
        logger.info(this.getClass().getName()+" method :execute");
        for(int i=0;i<intfs.length;i++){
            taskExecutor.execute(new TaskWorkThread(intfs[i]));
        }
        
    }
    
    public void execute(BaseSessionInterface baseDao,List<TaskInterface>intfs){
        logger.info(this.getClass().getName()+" method :execute");
        //this.taskBaseDao=baseDao;
        for(int i=0;i<intfs.size();i++){
            taskExecutor.execute(new TaskWorkThread(intfs.get(i),baseDao));
        }
        
    }
    public void execute(List<TaskInterface>intfs){
        logger.info(this.getClass().getName()+" method :execute");
        
        for(int i=0;i<intfs.size();i++){
            taskExecutor.execute(new TaskWorkThread(intfs.get(i)));
        }
        
    }
    /**
     * 任务线程
     * @author cz
     *
     */
    public class TaskWorkThread extends Thread{
        
        private TaskInterface intf;
        public TaskWorkThread(TaskInterface intf){
            this.intf=intf;
        }
        public TaskWorkThread(TaskInterface intf,BaseSessionInterface baseDao){
            this.intf=intf;
            this.baseDao=baseDao;
        }
        private BaseSessionInterface baseDao;
        public void run(){
            try {
                intf.execute();
                
                if(baseDao!=null){
                    baseDao.updateDownStates(intf.getManager());
                }
                //dao.addEntity(intf.getManager());
                
            } catch (Exception e) {
                logger.error("error",e);
                CasaSessionManager manager=intf.getManager();
                manager.setMessage("ServerIp:"+manager.getTargetIp()+SystemUtil.LINE_FEED+"time:"+DateUtil.getCurrectByDate()+SystemUtil.LINE_FEED+"thread Error"+e.getMessage());
                try {
                    baseDao.updateDownStates(manager);
                } catch (Exception e1) {
                    logger.error("error",e);
                }
                
            }
        }
    }
    
}

 

 

posted @ 2013-08-23 10:13  cz_1985  阅读(370)  评论(1)    收藏  举报