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

时间: 2025-01-31 06:55:56

ThreadPoolTaskExecutor的相关文章

spring 中 ThreadPoolTaskExecutor 的使用

配置文件代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springfr

spring线程池ThreadPoolTaskExecutor与阻塞队列BlockingQueue

一: ThreadPoolTaskExecutor是一个spring的线程池技术,查看代码可以看到这样一个字段: private ThreadPoolExecutor threadPoolExecutor; 可以发现,spring的  ThreadPoolTaskExecutor是使用的jdk中的java.util.concurrent.ThreadPoolExecutor进行实现, 直接看代码: @Override protected ExecutorService initializeExe

Spring中的线程池ThreadPoolTaskExecutor

1.直接调用Spring框架中的ThreadPoolTaskExecutor ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor(); //线程池所使用的缓冲队列 poolTaskExecutor.setQueueCapacity(200); //线程池维护线程的最少数量 poolTaskExecutor.setCorePoolSize(5); //线程池维护线程的最大数量 poolTaskExecutor.s

ThreadPoolTaskExecutor多线程使用

1.配置 ThreadPoolTaskExecutor bean <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="h

Spring线程池ThreadPoolTaskExecutor

一. ThreadPoolTaskExecutor 配置 <bean id ="taskExecutor"  class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >     <!-- 线程池维护线程的最少数量 -->     <property name ="corePoolSize" value ="5"

Spring中ThreadPoolTaskExecutor的线程调度及问题

问题现象 原因分析 任务调度逻辑 汇总分析 解决方案 问题现象 在我们的系统中,使用了这样的配置来开启异步操作: spring配置 <task:annotation-driven executor="executor"     scheduler="scheduler" /> <task:executor id="executor" pool-size="16-128"     keep-alive=&quo

ExecutorService与ThreadPoolTaskExecutor

1.ExecutorService private static ExecutorService exec = null; public static ExecutorService getExecutorServiceInstance(){ if(exec == null){ exec = Executors.newCachedThreadPool(); } return exec;} public void threadNoticeOrMessageOrShortMessage (Integ

ThreadPoolTaskExecutor 多线程分解执行耗时任务与单线程串行执行简单比较

import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.T

关于spring线程池ThreadPoolTaskExecutor的作用

关于spring的ThreadPoolTaskExecutor: 他的一个应用场景就是调第三方的接口的时候,有可能第三方响应非常缓慢,这个时候最好的办法就是能有个最大的等待时间,不然自己的程序会一直卡死,阻塞,最好的办法就是使用 ThreadPoolTaskExecutor.excute(new Runable(){ })调用线程的方法来执行与第三方接口的交互 <bean id="syncTaskExecutor" class="org.springframework.