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); } } } } }

浙公网安备 33010602011771号