Spring ThreadPoolTaskExecutor队列满的异常处理
来源:互联网 发布:台达plc编程实例47 编辑:程序博客网 时间:2024/05/29 04:59
<!-- 配置线程池 -->
<bean id="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="keepAliveSeconds" value="30000" />
<property name="maxPoolSize" value="50" />
<property name="queueCapacity" value="100" />
</bean>
corePoolSize:默认开启线程数;maxPoolSize:最大线程数;queueCapacity:缓冲任务队列的长度;
创建线程的方式:
创建线程的方式:
@Autowired
private ThreadPoolTaskExecutor threadPool;
threadPoolTaskExecutor.execute(new Runnable() {
public void run() {
//异步任务
}
});
public void run() {
//异步任务
}
});
Spring ThreadPoolTaskExecutor没有使用阻塞模式将任务加入到对象中,因此对象满的时候会抛出异常,对于这种情况,一般的企业执行环境不能无限制的增大内存队列容量,因此不得不阻塞队列的加入,spring内置提供的异常处理机制不好用,因为ThreadPoolExecutor.CallerRunsPolicy的处理方式是将异常任务放在调用线程中执行,这样对于单个执行时间长的任务,即使队列有空闲了,剩下的任务也要等这个任务在主线程执行完了才能继续往队列里面添加。有一个处理方法就是捕获executor.execute()的异常,只要发现有异常就等待一段时间,直到没有异常为止,这样就能模仿阻塞队列的效果,下面是代码:
while(true){
try{
taskExecutor.execute(new MailSender(tUserIssueInfo));
break;
}catch(TaskRejectedException e){
try{
Thread.sleep(1000);
}catch(Exception e2){}
}
}
阅读全文
0 0
- Spring ThreadPoolTaskExecutor队列满的异常处理
- spring线程池ThreadPoolTaskExecutor与阻塞队列BlockingQueue
- spring线程池ThreadPoolTaskExecutor与阻塞队列BlockingQueue
- spring线程池ThreadPoolTaskExecutor与阻塞队列BlockingQueue
- Spring中的ThreadPoolTaskExecutor
- Spring中的ThreadPoolTaskExecutor
- Spring ThreadPoolTaskExecutor线程池
- Spring线程池ThreadPoolTaskExecutor
- spring线程池ThreadPoolTaskExecutor
- spring线程池ThreadPoolTaskExecutor
- Spring线程池ThreadPoolTaskExecutor
- spring mvc 的异常处理
- spring mvc的异常处理
- spring mvc的异常处理
- Spring MVC 的 异常处理
- Spring MVC的异常处理
- spring ThreadPoolTaskExecutor的线程池类实现多线程
- SPRING中的线程池ThreadPoolTaskExecutor
- Jlink ob制作教程 三线Jlink ob神器!!!
- Vim跨文件复制
- 备份putty配置的方法
- ListView多条目展示
- Yii2.0 SESSION使用方法
- Spring ThreadPoolTaskExecutor队列满的异常处理
- software install
- 精度计算——NSDecimalNumber的使用和封装!
- easyui-edatagrid.js实现回车键结束编辑功能
- 英语考试 (最小生成树)
- Discuz!应用中心开发者后台在移动线路下无法打开的解决办法
- edatagrid扩展,仿kettle形式的表格实现
- 改善即有代码的设计---大型重构
- 堆和栈的区别