ThreadPoolTaskExecutor的配置解释
来源:互联网 发布:城市地图制作软件 编辑:程序博客网 时间:2024/06/04 18:29
@Bean("MyExecutor")
public Executor myTaskAsyncPool() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(config.getCorePoolSize());
executor.setMaxPoolSize(config.getMaxPoolSize());
executor.setQueueCapacity(config.getQueueCapacity());
executor.setKeepAliveSeconds(config.getKeepAliveSeconds());
executor.setThreadNamePrefix("MyExecutor-");
// rejection-policy:当pool已经达到max size的时候,如何处理新任务
// CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
线程的配置文件:
corePoolSize: 线程池维护线程的最少数量
keepAliveSeconds 线程池维护线程所允许的空闲时间
maxPoolSize 线程池维护线程的最大数量
queueCapacity 线程池所使用的缓冲队列
当一个任务通过execute(Runnable)方法欲添加到线程池时:
l 如果此时线程池中的数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。
l 如果此时线程池中的数量等于 corePoolSize,但是缓冲队列 workQueue未满,那么任务被放入缓冲队列。
l 如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量小于maximumPoolSize,建新的线程来处理被添加的任务。
l 如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量等于maximumPoolSize,那么通过 handler所指定的策略来处理此任务。也就是:处理任务的优先级为:核心线程corePoolSize、任务队列workQueue、最大线程 maximumPoolSize,如果三者都满了,使用handler处理被拒绝的任务。
l 当线程池中的线程数量大于 corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被终止。这样,线程池可以动态的调整池中的线程数。
- ThreadPoolTaskExecutor的配置解释
- ThreadPoolTaskExecutor的配置解释
- ThreadPoolTaskExecutor的配置解释
- ThreadPoolTaskExecutor的配置解释
- ThreadPoolTaskExecutor的配置解释
- ThreadPoolTaskExecutor的配置解释
- ThreadPoolTaskExecutor 配置及解释
- ThreadPoolTaskExecutor的配置使用
- ThreadPoolTaskExecutor配置详解
- springmvc中线程池(ThreadPoolTaskExecutor)的配置
- ThreadPoolTaskExecutor 的困惑。
- ThreadPoolTaskExecutor
- ThreadPoolTaskExecutor
- Spring线程池ThreadPoolTaskExecutor配置及详情
- Spring线程池ThreadPoolTaskExecutor配置及详情
- ThreadPoolTaskExecutor线程使用,及线程池配置
- Spring线程池ThreadPoolTaskExecutor配置及详情
- c3p0的配置解释
- 《剑指offer》问题5 替换空格 Java实现
- Hadoop发行版本比较与选型
- Fizz Buzz
- HDU 6162 Ch’s gift
- 数据结构 图(C++实现代码)
- ThreadPoolTaskExecutor的配置解释
- 【Redis手册二】redis.conf 配置参数说明
- Java-最大堆的排序,插入,删除
- 分金子(360公司2017春招真题)
- Rhel7链路聚合
- [算法]行列递增数组中查找某个元素
- rabbitMQ与Spring集成
- 字符集、字符编码与存储方式的理解
- java 多线程