Spring线程池开发实战
2014-12-29 18:00
357 查看
Spring线程池结合非Spring托管Bean
Spring-Config.xml
<bean id="syncLinkingDetectTaskProcess" class="cn.vobile.trackerspt.hatask.commontask.CommonTaskProcess" parent="abstractCommonTaskProcess"> <property name="taskSize" value="100" /> <property name="taskName" value="linking_detect_taisan_add_video" /> <property name="fromTaskStatus" value="created" /> <property name="toTaskStatus" value="started" /> <property name="executor" ref="syncLinkingDetectTaskExecutor" /> <property name="commonTaskHandler" ref="syncLinkingDetectTaskHandler" /> </bean> <bean id="syncLinkingDetectTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="3" /> <property name="maxPoolSize" value="5" /> <property name="queueCapacity" value="200" /> </bean>
Java Code
private Executor executor; public void setExecutor(Executor executor) { this.executor = executor; } public void dealProcessDetail(ProcessControl pc) { Assert.notNull(taskName, "taskName must not be null"); Assert.notNull(fromTaskStatus, "fromTaskStatus must not be null"); Assert.notNull(toTaskStatus, "toTaskStatus must not be null"); List<WorkingCommonTask> workingTasks = commonTaskService.getWorkingTasks(taskName, fromTaskStatus, taskSize); if (CollectionUtils.isEmpty(workingTasks)) { logger.info("No " + taskName + " task need to process: taskStatus=" + fromTaskStatus.getCode()); return; } for (final WorkingCommonTask workingTask : workingTasks) { if (null == workingTask) { continue; } boolean isUpdateSuccess = commonTaskService.updateWorkingTaskStatus(workingTask.getId(), fromTaskStatus, toTaskStatus); if (!isUpdateSuccess) { logger.info("The " + taskName + " task has been processed: id=" + workingTask.getId() + ", fromTaskStatus=" + fromTaskStatus + ", toTaskStatus=" + toTaskStatus); continue; } try { executor.execute(new Runnable() { @Override public void run() { try { commonTaskHandler.handle(workingTask.getId()); } catch (Exception e) { logger.error(taskName + " task handle failed: " + workingTask, e); } }; }); } catch (Exception e) { logger.error("Execute " + taskName + " failed: " + workingTask, e); if (e instanceof TaskRejectedException) { break; } } } }
下面是其他程序猿总结的Spring线程池开发经验,感觉挺不错的,值得学习:
http://blog.csdn.net/thjnemo/article/details/42241173
http://blog.csdn.net/majian_1987/article/details/16967285
相关文章推荐
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring线程池开发实战
- Spring3开发实战 之 第五章:Spring中的事务
- Spring的声明式事务管理(李刚 轻量级javaEE 企业应用实战-三大框架整合开发)
- 学习Spring3.X 企业应用开发实战笔记(二 )
- 学习Spring3.X 企业应用开发实战笔记(一)
- Spring 3.x 企业应用开发实战(含CD光盘1张)
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- Spring3开发实战 之 第二章:IoC/DI开发(2)
- Spring3开发实战 之 第二章:IoC/DI开发(1)
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制