项目解析-spring异步线程池配置与使用
来源:互联网 发布:淘宝卖家多少分一个钻 编辑:程序博客网 时间:2024/06/08 16:43
一、Spring配置
实际项目简单配置
<bean class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="10" /> <property name="maxPoolSize" value="10" /> <property name="queueCapacity" value="1000" /> </bean>
较完整参考
<!-- 异步线程池 --> <bean id="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!-- 核心线程数 --> <property name="corePoolSize" value="3" /> <!-- 最大线程数 --> <property name="maxPoolSize" value="20" /> <!-- 队列最大长度 >=mainExecutor.maxSize --> <property name="queueCapacity" value="1000" /> <!-- 线程池维护线程所允许的空闲时间 --> <property name="keepAliveSeconds" value="300" /> <!-- 线程池对拒绝任务(无线程可用)的处理策略 --> <property name="rejectedExecutionHandler"> <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" /> </property> </bean>
二、Service中注入
@Autowired protected ThreadPoolTaskExecutor taskExecutor;
三、service中方法使用
项目中用来异步记log
public void doSomething(){ threadPool.execute(new Runnable() { @Override public void run() { //异步执行耗时的业务任务 } });}
@Transactional public void logBomInfo(final int loggingKey, final String appId, final Object bom) { try { taskExecutor.execute(new Runnable() { @Override public void run() { try { LogBomInfo logBomInfo = new LogBomInfo(); logBomInfo.setBomInfoId(loggingKey); logBomInfo.setAppId(appId); logBomInfo.setBom(jsonMapper.writeValueAsString(bom)); logBomInfo.setBizkey(getBomBizKey(bom)); logBomInfoDAO.insertLogBomInfo(logBomInfo); if (logger.isDebugEnabled()) { logger.debug("保存日志成功, bomInfoId:" + loggingKey); } } catch (Exception ex) { logger.error("保存日志发生错误", ex); } } }); } catch (Exception ex) { logger.error("写入日志表失败", ex); } }
0 0
- 项目解析-spring异步线程池配置与使用
- 使用Spring的TaskExecutor的线程池执行异步操作
- spring线程池配置及使用
- spring线程池配置及使用
- Spring线程池与JDK线程池配置
- 使用线程池与内部类实现方法异步
- Spring线程池配置
- Spring线程池配置
- spring配置线程池
- Spring线程池配置
- Spring线程池配置
- spring线程池配置
- spring线程池配置
- java线程 同步与异步 线程池
- java线程 同步与异步 线程池
- java线程 同步与异步 线程池
- Spring @Async异步线程池用法总结
- 解析C#多线程编程中异步多线程的实现及线程池的使用
- Linux环境下非root用户安装Python及相关库
- 2.14_图像合成
- Android 数据库,解决Failed to read row 6, column -1 from a CursorWindow which has 11 rows, 14 columns.
- mybatis choose when用法
- HDU 5674 Function(斐波那契模数列循环节)
- 项目解析-spring异步线程池配置与使用
- Java并发编程:Lock(上)
- 2.15.1_通过剪辑区域来擦除图像
- Android Studio Gradle 基础
- 图-最小生成数-prims算法
- Map 和HashMap
- nyoj_257郁闷的c小加(一)
- C# js帮助类
- 2.15.2_利用剪辑区域来制作伸缩式动画