关于Spring封装Java线程池的理解

来源:互联网 发布:mac暴风影音调整字幕 编辑:程序博客网 时间:2024/05/17 22:40

项目用到了TaskExecutor,我看有的是通过spring bean配置的.有的是通过配置的方式,于是看了下官方文档,官方文档(好像是第30.5章)上写的很清楚,里面的参数的含义等东东,

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"><!-- 核心线程数 --> <property name="corePoolSize" value="${task.core_pool_size}" /><!-- 最大线程数 -->  <property name="maxPoolSize" value="${task.max_pool_size}" /><!-- 队列最大长度 --><property name="queueCapacity" value="${task.queue_capacity}" /><!-- 线程池维护线程所允许的空闲时间,默认为60s --><property name="keepAliveSeconds" value="${task.keep_alive_seconds}" /></bean><!-- 注解式 --><task:annotation-driven /><!-- 或则 -->   <task:executor id="asyncTaskExecutor"                   pool-size="${executor.pool.size}"                   queue-capacity="${executor.queue.capacity}"                   keep-alive="500"/>

至于SpringMVC整合TaskExecutor线程池的配置/使用

一、配置jdbc.properties添加:

#------------ Task ------------task.core_pool_size=5task.max_pool_size=50task.queue_capacity=1000task.keep_alive_seconds=60

二、配置Spring的applicationContext.xml添加:
  
就是上面的配置

三、在实现层Impl声明并注入:

       

@Resource(name = "taskExecutor")    private TaskExecutor taskExecutor;

四、在方法里调用:

try {taskExecutor.execute(new Runnable() {public void run() {//这里编写处理业务代码}});} catch (Exception e) {e.printStackTrace();}


0 0