`

ThreadPoolTaskExecutor的配置解释

 
阅读更多

ThreadPoolTaskExecutor的配置在网上找了很多解释没找到,看了下ThreadPoolExecutor的配置,名字差不多,应该含义也差不多。只不过ThreadPoolTaskExecutor对

ThreadPoolExecutor做了包装。

<bean id ="taskExecutor" class ="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<property name ="corePoolSize" value ="5" />
<property name ="keepAliveSeconds" value ="300" />
<property name ="maxPoolSize" value ="10" />
<property name ="queueCapacity" value ="25" />
</bean> 线程的配置文件:

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,线程将被终止。这样,线程池可以动态的调整池中的线程数。

分享到:
评论

相关推荐

    Spring线程池ThreadPoolTaskExecutor配置详情

    本篇文章主要介绍了Spring线程池ThreadPoolTaskExecutor配置详情,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    spring线程池(同步、异步).docx

    Spring中的同步执行器 ...2.也可以用ThreadPoolTaskExecutor结合FutureTask做到同步。 3.2. SyncTaskExecutor与ThreadPoolTaskExecutor区别 前者是同步执行器,执行任务同步,后者是线程池,执行任务异步。

    redis lits queue 和 ThreadPoolExecutor 结合

    NULL 博文链接:https://pzzy2000.iteye.com/blog/2434034

    MdcThreadPoolTaskExecutor.java

    MdcThreadPoolTaskExecutor.java

    spring-async-example:从2个REST端点异步获取数据并合并响应

    该解决方案的逻辑非常简单,该应用程序使用Spring的@EnableAsync来配置ThreadPoolTaskExecutor ,该ThreadPoolTaskExecutor将用于运行异步方法。 在此应用程序中,使用提供的此ThreadPoolTaskExecutor获取用户及其...

    taskScheduled:读取redis的任务调度

    taskScheduledtaskScheduled是一个使用java编写的读取redis的任务调度,每隔500毫秒读取redis里面的有序集合,并将取得的结果通过接口发送给redis.url(配置文件配置)。taskScheduled技术使用spring:4.1.4.RELEASE,...

    详解Springboot对多线程的支持

    Spring是通过任务执行器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor来创建一个基于线城池的TaskExecutor。这篇文章给大家介绍Springboot对多线程的支持,感兴趣的朋友一起看看吧

    SPRING API 2.0.CHM

    All Classes AbstractAdvisorAutoProxyCreator AbstractApplicationContext AbstractApplicationEventMulticaster AbstractAspectJAdvice AbstractAspectJAdvisorFactory AbstractAspectJAdvisorFactory....

Global site tag (gtag.js) - Google Analytics